我创建了一个网站,每隔几秒通过 AJAX 从多个来源加载数据。但是我遇到了一些奇怪的行为。这是代码:
function worker1() {
var currentUrl = 'aaa.php?var=1';
$.ajax({
cache: false,
url: currentUrl,
success: function(data) {
alert(data)
},
complete: function() {
setTimeout(worker1, 2000);
}
});
}
function worker2() {
var currentUrl = 'aaa.php?var=2';
$.ajax({
cache: false,
url: currentUrl,
success: function(data) {
alert(data)
},
complete: function() {
setTimeout(worker2, 2000);
}
});
}
问题是很多时候,其中一名 worker 返回 NaN。如果我更改调用频率,比如 2000
和 1900
,那么一切正常,我几乎没有得到 NaN
结果。当这些频率相同时,其中一个调用的 NaN
结果超过 80%。浏览器似乎无法处理同时调用的两个请求。我只使用这两个工作人员,因此浏览器不应因 AJAX 请求而过载。问题出在哪里?
请注意,aaa.php
使用 mySql 数据库,并根据 url 中的参数进行一些简单的查询。
最佳答案
var urls = ['/url/one','/url/two', ....];
$.each(urls, function(i,u){
$.ajax(u,
{ type: 'POST',
data: {
answer_service: answer,
expertise_service: expertise,
email_service: email,
},
success: function (data) {
$(".anydivclass").text(data);
}
}
);
});
Note: The messages generated by the success callback will overwrite each other as shown. You'll probably want to use $('#divid').append() or similar in the success function.
关于javascript - 同时触发的多个 ajax 调用无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35428743/