sal*_*ers 2 javascript variables ajax json scope
我正在尝试将ajax成功数组从一个函数返回到另一个函数.由于某种原因,我似乎无法将存储在ajax函数成功部分的变量中的数据传递给父函数返回.
我看了看这篇文章试图找出问题,但没有这样的运气: jQuery Ajax调用 - 设置成功的变量值
非常感谢您的帮助.
这是代码的简化版本:
// make json_to_return global
var json_to_return;
function loop_through_data(){
// call the load_days function and put its array data into days_array
var days_data = load_days(03,2010);
// I'd like to be able to iterate through days_data here
//
//
}
function load_days(selectedMonth, selectedYear){
$.ajax({
type: "POST",
dataType: "json",
url: "../includes/get_availability.php",
data: "month=" + selectedMonth + "&year=" + selectedYear,
success: function(available_json){
json_to_return = available_json;
},
error: function(msg){
alert("error " + msg);
}
});
return json_to_return;
}
Run Code Online (Sandbox Code Playgroud)
这部分功能发生在以后:
success: function(available_json){
json_to_return = available_json;
}
Run Code Online (Sandbox Code Playgroud)
因此,您返回的变量是未定义的,因为设置它的代码在响应从服务器返回之前不会发生.从成功函数调用其余的代码,因此它将在数据准备好或设置时运行async:false(因为它锁定浏览器而不太理想).
该async: false方法是这样的:
$.ajax({
type: "POST",
async: false,
dataType: "json",
url: "../includes/get_availability.php",
data: "month=" + selectedMonth + "&year=" + selectedYear,
success: function(available_json){
json_to_return = available_json;
},
error: function(msg){
alert("error " + msg);
}
});
Run Code Online (Sandbox Code Playgroud)
更好的方法:
$.ajax({
type: "POST",
dataType: "json",
url: "../includes/get_availability.php",
data: "month=" + selectedMonth + "&year=" + selectedYear,
success: function(available_json){
loopThroughTheDaysAndDoStuff(available_json);
},
error: function(msg){
alert("error " + msg);
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4424 次 |
| 最近记录: |