我正在尝试将 ajax 结果存储到变量中。当我使用 console.log 时,它给出了我想要的 html 标签,但是当我尝试设置为全局变量时,它说未定义。
如何将ajax结果存储到全局变量
var result;
$.ajax({
url: "person.html",
success: function(data){
//result=data;
console.log(data);
}
});
//console.log(result);
最佳答案
Ajax 是异步的,这意味着找出结果的代码与结果的控制台日志同时运行,这就是为什么你得到未定义的原因,因为结果在执行时尚未设置值正在控制台记录。
我知道控制台记录结果的唯一方法是在 ajax success 函数中执行此操作,或者让 ajax success 函数调用包含控制台日志的后续函数。这是在控制台记录值之前确保已返回值的唯一方法。
示例:
示例 1:
var result;
$.ajax({
url: "person.html",
success: function(data){
result=data;
console.log(result);
//Note that in this instance using the variable 'result' is redundant, as you could simply console.log data like you're already doing.
}
});
示例 2:
var result;
$.ajax({
url: "person.html",
success: function(data){
result=data;
subsequentFunction(result);
}
});
function subsequentFunction(result){
console.log(result)
}
// Note that if you're doing something simple with result that this could be a bit long winded and unnecessary.
这完全取决于您想要对结果做多少事情,以决定哪个选项更好。
注意:ajax 调用还有一个名为“async”的属性,您可以将其设置为 false,强制其同步,但这通常被认为是一个坏主意,因为它会阻止任何其他代码运行,直到返回结果并锁定浏览器。
关于javascript - 将结果 ajax 存储到变量中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42364736/