[英]how can i stop all ajax request and take the latest one?
我有一個像這樣的按鈕:
<input type="button" id="getresult" value="getresult" />
通過單擊此按鈕,可以激活一個ajax調用請求。 如果我一直單擊該按鈕,那么我會收到ajax請求隊列,這些請求正在命中服務器並等待響應。 但我想殺死所有這些請求,並希望接受最新的一個請求。
$('#getresult').click(function() {
var parameters = {data1:'value1',data2:'value2'};
$.post("getresult.php",parameters,function(msg){
console.log(msg);
},'json');
});
我嘗試了xhr.abort(); 通過將請求分配給此變量。 但是每當我單擊按鈕時,它都會中止所有請求。 我無法獲取最新請求。 例如 如果我單擊按鈕6次,那么將生成6請求,那么我想取消5前一個請求,並希望繼續執行第6個請求。
這是小提琴: http : //jsfiddle.net/s4pbn/308/
禁用按鈕,並在請求完成后將其重新啟用:
$('#getresult').click(function () {
this.disabled = true;
var parameters = {
data1: 'value1',
data2: 'value2'
};
$.post("getresult.php", parameters, function (msg) {
console.log(msg);
}, 'json').always(function () {
this.disabled = false;
}.bind(this));
});
編輯:
我無法禁用該按鈕。 有一些限制。
真的不確定為什么,然后嘗試:
$('#getresult').click(function () {
if (this.pendingRequest) this.pendingRequest.abort();
var parameters = {
data1: 'value1',
data2: 'value2'
};
this.pendingRequest = $.post("getresult.php", parameters, function (msg) {
console.log(msg);
this.pendingRequest = null;
}, 'json');
});
但是請注意,這只是停止客戶端瀏覽器來偵聽先前的請求響應,而不是服務器來處理任何先前的響應。 第一種方法是更好的恕我直言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.