У меня есть окно поиска в моем приложении. В котором я должен показывать результаты, пока пользователь вводит слово в поле поиска. Для этого мне нужно отменить все предыдущие запросы и показать результат последнего запроса в сетке.Отменить все предыдущие запросы в 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'? –