![](/img/trans.png)
[英]Use variable outside the success function from an ajax/jquery call
[英]use data outside of ajax success call
我正在尝试从 AJAX 成功调用中获取数据,以便在代码的其他地方使用。 但是,由于某种原因,最后一行中的console.log
返回“未定义”。 我还在数据上尝试JSON.parse()
和JSON.stringify()
,它们都返回了错误。
function loadInfo() {
jQuery(function($) {
$.ajax({
type: "POST",
url: "/admin.php",
data: {loadInfo: 1},
dataType: "json",
success: function(data) {
getResponse(data);
}
})
});
}
var data;
function getResponse(response) {
data = response;
}
console.log(data);
但是,如果我在 function 中执行了 console.log ......
var data;
function getResponse(response) {
data = response;
console.log(data);
}
它按预期输出数据。 我认为数据变量将是全局的。 或者是别的什么?
AJAX 代表异步 Javascript 和 XML。 异步意味着它正在发出请求,但由于这可能需要时间才能到达、处理及其响应才能返回,所以它不是等待请求完成,而是继续操作。
当你这样做
console.log(data);
在您的代码中,请求仍在执行中,由于它尚未完成,因此尚未执行回调。 回调仅在请求成功完成时执行。
使固定:
function loadInfo() {
jQuery(function($) {
$.ajax({
type: "POST",
url: "/admin.php",
data: {loadInfo: 1},
dataType: "json",
success: function(data) {
getResponse(data);
console.log(data);
}
})
});
}
var data;
function getResponse(response) {
data = response;
}
//console.log(data);
这个想法是我们需要在请求完成后继续处理请求的结果。 请注意,我的 console.log 不在getResponse
中,因为最好将结果表示与结果计算分开。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.