我正在使用这样的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 Script
或Continue
。
如果我点击Stop Script
然后停止循环$.each
,或者如果我点击继续,那么它会继续运行更多代码,过了一段时间它再次问我。
我的问题是如何删除此提醒。
答案 0 :(得分:4)
async: false,
这导致了问题。它会阻止你的javascript直到加载页面。删除它。
这意味着您正在尝试同步运行代码,例如在阻止模式下。
答案 1 :(得分:0)
第一:你做不到。目的正是为了防止用户受到这样的代码的副作用。
第二:尝试收集数组中的所有URL,将其作为一(1)个ajax传递给服务器,在一(1)个批处理中收集每个URL的回复并附加所有这些错误消息。省略“成功”,只报告错误(“没有新闻是好消息”)。
但如果列表足够长,即使这可能会导致错误。
将ajax设置为async:true可能会更快但是用户PC(可能还有你的服务器......)