我的这段代码有问题。 有时候是这样的: 只需从 console.log 启动代码,如果按下更新按钮功能就可以工作,我会得到 null。
为什么会发生这种情况? 我该如何修复?
var urljson = "data_json.php";
var data = null;
var jqXHR = $.ajax
({
type: "GET",
url: urljson,
dataType: 'json',
success: successHandler
});
function successHandler(result) {
data = result;
}
function update(){
var jqXHR = $.ajax
({
type: "GET",
url: urljson,
dataType: 'json',
success: successHandler
});
function successHandler(result) {
data = result;
}
}
$(document).ready(function(){
console.log(data) //// null
});
document.getElementById('update').addEventListener('click', function() {
update();
console.log(data) //// Array [ Object, Object, Object, Object, Object, Object, Object, Object, Object, Object, other 3213… ]
});
最佳答案
$.ajax()
异步返回结果。使用 success
处理程序或链接到 $.ajax()
的 .then()
来处理从请求返回的响应。
function update() {
var jqXHR = $.ajax({
type: "GET",
url: urljson,
dataType: "json",
success: successHandler
});
function successHandler(result) {
data = result;
// do stuff with `data` here
console.log(data);
}
}
$(document).ready(update);
jsfiddle https://jsfiddle.net/89jkzzyk/
关于javascript - 将 ajax 结果输入变量的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41398786/