javascript - AJAX 延迟下一行的执行

标签 javascript php ajax

给出以下代码,谁能帮我理解为什么第一个警报在第二个警报之后执行?我相信发生这种情况是因为 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/

相关文章:

javascript - 删除子div

php - 将 unicode URL 转换为 ASCII

c# - 如何防止用户进行未经授权的 web 方法调用和篡改客户端验证

javascript - 使用 AJAX/jQuery 锚定标签

javascript - 如何在给定关键字和要搜索的字段列表时过滤数组?

javascript - 如何使用 jQuery 清空输入值?

javascript - 在页面加载时调用 Flash 外部接口(interface) AS3 函数

php - Ruby 通过模板从字符串中选择数据,就像 php preg_match 做的那样

javascript - 未定义的 JS 警报

javascript - Ajax 调用未返回预期值