私のアプリケーションには検索ボックスがあります。ユーザーが検索ボックスに単語を入力している間に結果を表示する必要があります。このために私はすべての以前のリクエストを中止し、最後のリクエストの結果をグリッドで表示する必要があります。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'を呼び出すコードはどこですか? –