0

我正在使用这样的 jQuery ajax 代码:

$.each(url_id, function(index, value) {
        $.ajax({
            async: false,
            type: "POST",
            url: "webservices/insert-manual.php",
            data: { url_id: value},
            dataType: "json"
        }).done(function(response){
            if(response.code == "200"){
                $("#results").append('<div class="results-list"><strong>Well done!</strong></div>');
            }else{
                $("#results").append('<div class="results-list-error"><strong>Oh snap!</strong> There is no records to update in database.</div>');
            }
        }); 
    });

当我运行此脚本时,我在 Mozilla 警报中收到此错误消息。

A script on this page may be busy, or it may have stopped responding. You can stop the script now, or you can continue to see if the script will complete.

Script: http://localhost/jquery-project/js/jquery-1.7.2.min.js:2

这要求我Stop ScriptContinue

如果我点击Stop Script然后它停止循环$.each,或者如果我点击继续然后它继续运行进一步的代码,一段时间后它再次问我。

我的问题是如何删除此警报。

4

2 回答 2

4
async: false,

这导致了问题。它会阻止您的 javascript,直到页面加载完毕。去掉它。

这意味着您正在尝试同步运行代码,例如在阻塞模式下。

于 2013-05-21T09:52:21.933 回答
0

第一:你不能。目的正是为了防止用户受到这样的代码的副作用。

第二:尝试收集一个数组中的所有 url,将其作为一 (1) 个 ajax 传递给服务器,在一 (1) 个批次中收集每个 url 的回复并附加所有这些错误消息。省略“成功”,只报告错误(“没有消息就是好消息”)。

但是,如果列表足够长,即使这样也可能导致错误。

将 ajax 设置为 async:true 可能会更快,但会阻止用户 PC(可能还有您的服务器......)

于 2013-05-21T09:57:18.343 回答