Javascript 使用ajax成功调用之外的数据
我试图从AJAX成功调用中获取数据,以便在代码中的其他地方使用。但是,由于某种原因,最后一行中的Javascript 使用ajax成功调用之外的数据,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我试图从AJAX成功调用中获取数据,以便在代码中的其他地方使用。但是,由于某种原因,最后一行中的console.log返回“undefined”。我还在数据上尝试了JSON.parse()和JSON.stringify(),这两种方法都返回了错误 function loadInfo() { jQuery(function($) { $.ajax({ type: "POST", url: "/ad
console.log
返回“undefined”。我还在数据上尝试了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);
但是,如果我在函数中添加了console.log
var data;
function getResponse(response) {
data = response;
console.log(data);
}
它按预期输出数据。我以为数据变量是全局的。还是别的什么?AJAX代表异步Javascript和XML。异步意味着它正在发出一个请求,但由于到达、处理和响应可能需要时间,所以它不会等待请求完成,而是继续操作 当你这样做的时候
console.log(data);
在您的代码中,请求仍在执行中,由于尚未完成,因此回调尚未执行。回调仅在请求成功完成时执行
修正:
我们的想法是,我们需要在请求完成后继续处理请求的结果。注意,my console.log不在
getResponse
内,因为最好将结果表示与结果计算分开。var数据代码>使其未定义。在进行AJAX调用之前,它是未定义的。如果日志在函数之外,那么它将在AJAX之前运行。
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);