我的應用程序中有一個搜索框。我必須在用戶在搜索框中輸入單詞時顯示結果。爲此,我需要放棄所有先前的請求,並在網格中顯示上次請求的結果。取消jQuery中的所有請求
因爲我正在使用網格,網格「beforeSend」事件將覆蓋jQuery的beforeSend事件。所以我用下面的代碼,
<script type="text/javascript">
$(function() {
$.xhrPool = [];
grid.Adaptor.prototype.beforeSend = function (jqXHR) {
$.xhrPool.push(jqXHR);
}
$.xhrPool.abortAll = function() {
$(this).each(function (i, jqXHR) {
jqXHR.abort();
$.xhrPool.splice(i, 1);
});
}
$.ajaxSetup({
complete: function (jqXHR) {
var i = $.xhrPool.indexOf(jqXHR);
if (i > -1) $.xhrPool.splice(i, 1);
}
});
})
不過,我可以推xhrPool的要求,但我不能放棄以前的請求。
注意$.xhrPool.abortAll = function() {
當我放置一個斷點時,這沒有打。
我在這裏失蹤了什麼?
您添加一個方法數組對象。是什麼讓你認爲JavaScript解釋器會自己調用該方法? – undefined
http://stackoverflow.com/a/8841412/1982680試試這個和http://jsfiddle.net/s4pbn/148/ –
哪裏是調用'$ .xhrPool.abortAll'的代碼? –