我有一個簡單的聊天與長輪詢完成。該聊天包含2行對話(或更多)。每行都有一個唯一的ID和一些要顯示的消息。 當我點擊第一行時,爲了顯示這個對話的消息,我開始了一個ajax,並且它保持在服務器端的循環內部。但是,當我點擊第二行時,我需要結束以前的ajax並開始一個新的。Ajax中止不會中止點擊,並重復請求
我嘗試了一些選項,如下面的,但我沒有找到解決方案。
$('li.chat-conversation').on('click', function(){
var requestRunning = true;
var xhr;
var id = $(this).attr('data-conversation-id');
var ajaxOpt = {...};
var fn = function(){
xhr = $.ajax(ajaxOpt);
if(requestRunning){
xhr.abort();
requestRunning = false;
}
};
var interval = setInterval(fn, 2000);
});
任何人都可以幫我找出一個邏輯嗎?
注意:setInterval僅作爲示例。
可能重複的[使用jQuery中止Ajax請求](http://stackoverflow.com/questions/446594/abort-ajax-requests-using-jquery) – merlin2011
爲什麼不只是檢查'xhr .readystate'的值,如果它不是'4',則放棄請求?使用自己的布爾標誌跟蹤活動請求可能很容易失去同步,這就是爲什麼我們首先具有'readystate'屬性。 –
@ScottMarcus但是我需要一個請求來保持活動狀態,只有當我點擊另一行時才中止,使用readstate有可能嗎? –