[英]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.