JQuery прервать AJAX вызывает ошибку 0

0

Попросите простой jquery ajax call:

var ajaxOb;
var callAjax = function (){
if (ajaxOb ){
   ajaxOb .abort();
}
ajaxOb  = $.ajax({..});
}

функция callAjax добавляется к событию onPress входного текстового поля. Он отлично работает, за исключением случаев, когда я набираю что-то быстро, я получил ошибку Ajax (0)

Как предотвратить это?

  • 1
    Так в чем твоя проблема и твой вопрос? Что именно вы хотите достичь?
Теги:

2 ответа

3
Лучший ответ

Возможно, потому, что вы стреляете слишком много одновременного запроса XHR. Большинство браузеров ограничивают их чем-то разумным. Одним из потенциальных решений было бы не запускать событие при каждом нажатии клавиши, но включать таймер, который гарантирует, что даже огонь срабатывает максимум один раз за указанное время. Вы можете использовать этот маленький плагин, который я сделал некоторое время назад для этого:

(function ($) {
    $.fn.delayEvent = function (event, callback, ms) {
        var timer = 0;
        $(this).on(event, function () {                   
            clearTimeout (timer);
            timer = setTimeout(callback, ms);
        });
        return $(this);
    };
})(jQuery);

Применение:

$("#someTextInput").delayEvent("keyup", function () {
    console.log("I will fire a maximum of once every 500ms");
}, 500);
3

возможно, его просто уволили часто!

вы можете попробовать с помощью setTimeout:

var ajaxOb;
var timeout;
var callAjax = function (){
if (ajaxOb ){
   ajaxOb .abort();
}
clearTimeout(timeout);
timeout = setTimeout(function(){
    ajaxOb  = $.ajax({..});
}, 100);

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню