javascript - 同时触发的多个 ajax 调用无法正常工作

标签 javascript php jquery ajax

我创建了一个网站,每隔几秒通过 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。如果我更改调用频率,比如 20001900,那么一切正常,我几乎没有得到 NaN 结果。当这些频率相同时,其中一个调用的 NaN 结果超过 80%。浏览器似乎无法处理同时调用的两个请求。我只使用这两个工作人员,因此浏览器不应因 AJAX 请求而过载。问题出在哪里?

请注意,aaa.php 使用 mySql 数据库,并根据 url 中的参数进行一些简单的查询。

最佳答案

您只需要 $.each $.ajax 的两种参数形式

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/

相关文章:

javascript - 如何将多个对象添加到对象内的数组中

javascript - 将键盘绑定(bind)到左/右导航

php - 使用 select 查询和附加 php 脚本插入 mysql 表

javascript - document.getElementsByTagName ('img' ) ,如何只获取png图片?

javascript - 如何 console.log 多个对象?

php - 如何创建多个游戏服务器?

php - 在 PHP MySQL 查询中获取外键对象的简洁方法

jquery - 有没有办法在 JQuery Datatable 中的标题文本旁边显示排序图标?

javascript - eval() 的替代方案

jquery - 为什么 contains 选择器只能与 .length 一起使用?