给出以下代码,谁能帮我理解为什么第一个警报在第二个警报之后执行?我相信发生这种情况是因为 ajax 在获取数据之前有一个小的延迟,如果我错了请纠正我。提前致谢。
Javascript code:
window.onload = function() {
arry = new Array();
jQuery.ajax({
type: "GET",
url: "index.php?op=17&id=@@postID@@&action=fetch",
dataType: "text",
success: function(response){
var e = response;
console.log(JSON.parse(e));
arry = JSON.parse(e)
alert(e); //1st alert
}
});
alert("test") //2nd alert
}
最佳答案
AJAX 中的第一个“A”代表异步。这意味着它不会阻塞您的代码,因此 alert('test')
会在您的 AJAX 请求后立即被调用,而 alert(e)
只会被调用一次AJAX 请求已收到来自服务器的成功响应。
您提到的“小延迟”不是这样,而是服务器执行任何代码并返回响应所花费的时间。
如果您确实需要同步处理请求,您可以将 async
属性传递给 AJAX 调用,如下所示:
window.onload = function() {
var arry = [ ];
jQuery.ajax({
type: "GET",
url: "index.php?op=17&id=@@postID@@&action=fetch",
dataType: "json",
async: false
}).done(function(response) {
arry = response
alert(response); //1st alert
});
alert("test") //2nd alert
}
请注意,我已经稍微更新了代码以使用 done()
promise 。此外,指定 dataType: "json"
不需要在响应文本上调用 JSON.parse()
。
关于javascript - AJAX 延迟下一行的执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51185804/