javascript - 为什么 jQuery 似乎正在对我的 ajax 请求进行排队?

标签 javascript php jquery ajax queue

我正在尝试使用 jQuery 长轮询在我的 PHP 站点中实现消息传递系统。但是,每当我在监听新消息时尝试发送消息时,它似乎都会在执行发送消息脚本之前等待它完成监听,从而导致 Firebug 控制台类似于以下内容:

Firebug loading

两者同时停止,考虑到第二个(发送消息)调用在其他脚本未运行时根本不需要时间来执行,这让我相信我的发送消息脚本正在等待我的轮询循环来完成。以下是我的 PHP(为了安全目的删除了一些非必要的代码)和 JavaScript,用于长轮询。我会发布消息发送,但它所做的只是将一个值插入数据库。

长轮询

$ml = message_len($id); //Gets number of messages
$start_length   = $ml;
$current_length = $ml;
$timeout = 0;

while( $current_length <= $start_length )
{
    sleep(1);
    clearstatcache();
    $current_length = message_len($id);
    $timeout++;
    if($timeout>29)
    {
        echo $current_length;
        exit;
        break;
    }
}

$info = getInfo(); //Gets message array
echo $info;

JavaScript:

function message_listen()
{
     ajaxListener = $.ajax({
        type: "GET",
        url: "/scripts/php/method/exchange/listen.php", 
        data: { "id" : offerid },
        cache: false,
        success:
            function(data)
            { 
                    /* Do something with the data */

                setTimeout("message_listen()", 1000);
            }
    });
}

发送消息的ajax调用如下所示:

function message_send(message)
{
    //msgid is defined elsewhere
    $.get("/api/sendmsg.php", { "id" : msgid, "message" : message }, function(data) { document.getElementById("txtbx").value=""; } );
}

请注意,这是两个正在调用的单独文件。无论我尝试什么,这些文件都会同时执行并在同一时间停止。我需要在自己的时间发送消息,让监听器检测到该消息,然后在发送新消息时返回消息。其他人也发生过这样的事情吗?任何帮助将不胜感激。谢谢。

最佳答案

在您的代码中,

JavaScript:

function message_listen()
{
     ajaxListener = $.ajax({
        type: "GET",
        url: "/scripts/php/method/exchange/listen.php", 
        data: { "id" : offerid },
        cache: false,
        success:
            function(data)
            { 
                    /* Do something with the data */

                setTimeout("message_listen()", 1000);
            }
    });
}

申请,

缓存:true

关于javascript - 为什么 jQuery 似乎正在对我的 ajax 请求进行排队?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23100283/

相关文章:

javascript - CSS3 过渡动画

javascript - 响应式菜单未显示 Uncaught TypeError : jQuery(. ..).on 不是 WordPress 网站中的功能

php - 从 HTTPS 页面移动到 HTTP 页面会中断网站

php - 需要逻辑帮助,制作三维数组(PHP)

javascript - 动态嵌套对象数组的递归迭代

javascript - 用 enzyme 测试按钮类

php - map 上的最新 Foursquare 签到

javascript - 在 JavaScript 中对同一个变量调用多个函数

javascript - 单击链接后使用 Javascript 的 Div 动画 - 怎么样?

javascript - 如何处理函数中的返回值?