gpt4 book ai didi

javascript - Jquery post success变量范围

转载 作者:行者123 更新时间:2023-12-02 12:42:34 26 4
gpt4 key购买 nike

我正在尝试将 ajax 成功数组从一个函数返回到另一个函数。由于某种原因,我似乎无法将ajax函数成功部分中变量中存储的数据传递到父函数中以返回。

我查看了这篇文章,试图找出答案,但运气不佳: jQuery Ajax call - Set variable value on success

非常感谢您的帮助。

这是代码的简化版本:

// 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;

}

最佳答案

这部分函数稍后发生:

success: function(available_json){
json_to_return = available_json;
}

所以您返回的变量是未定义的,因为设置它的代码直到服务器返回响应后才会发生。要么调用其余代码从成功函数中运行,这样它将在数据准备好时运行,要么设置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);
}
});

更好的方法:

              $.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);
}
});

关于javascript - Jquery post success变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2563827/

26 4 0