簡體   English   中英

為什么jQuery似乎在排隊我的Ajax請求?

[英]Why does jQuery seem to be queuing my ajax requests?

我正在嘗試使用jQuery長輪詢在我的PHP站點中實現一個消息傳遞系統。 但是,每當我嘗試在偵聽新消息時發送消息時,它似乎都在等待它完成偵聽,然后再執行發送消息腳本,從而導致類似於以下內容的Firebug控制台:

螢火蟲加載

兩者都同時停止,考慮到第二個(發送消息)調用實際上在其他腳本未運行時完全沒有時間執行,這使我相信我的發送消息腳本正在等待輪詢循環完成。 以下是我的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

通過以下信息設法解決了該問題: http : //lucadaniel.ro/2013/01/27/concurrent-ajax-requests-and-php/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM