Получите последний запрос ajax и прервите других - PullRequest
9 голосов
/ 14 ноября 2010

Я искал, и эта проблема кажется простой, но не могу найти ответ. У меня есть несколько запросов на разные URL. Но для каждого URL я хочу получить результат только один раз, и он должен быть последним в том же URL-адресе, который вызывается. Моя проблема сейчас "как получить только последний?" Я посмотрел на это, и, кажется, 3 года:

http://plugins.jquery.com/project/ajaxqueue

Есть ли другой способ сделать это красиво и чисто? Если есть что-то подобное, было бы идеально:

queue: "getuserprofile",
cancelExisting: true

(где существующий ajax в очереди getuserprofile будет отменен)

Спасибо

Ответы [ 3 ]

10 голосов
/ 14 ноября 2010

Это объясняет , как использовать jQuery для вызова ajax и как его прервать.Все, что вам нужно сделать, это создать массив, который хранит каждый запрос.Затем вы можете отменить предыдущий запрос при добавлении нового.

ajaxRequests = new Array();

queueRequest = function() {
    if(ajaxRequests[ajaxRequests.length - 1]) {
        ajaxRequests[ajaxRequests.length - 1].abort();
    }

    ajaxRequests[ajaxRequests.length] = //Insert New jQuery AJAX call here.
}
4 голосов
/ 05 сентября 2014

Поскольку нам нужен только результат последнего запроса, это очень просто и работает.

var ajax = null;
var getFoo = function() {
    if(ajax) ajax.abort();
    ajax= $.ajax({});
};
getFool();
getFool();
getFool();
getFool();
getFool();
getFool();

выполняется только последний запрос.

1 голос
/ 14 августа 2017

Вместо использования библиотеки можно использовать базовый метод jquery Ajax:

beforeSend:{}

Например:

xhr = jQuery.ajax({
            url: /*Your URL*/
            type: "POST",
            data: {
              //data
            },
             /* if there is a previous ajax request, then we abort it and then set xhr to null */
            beforeSend : function()    {           
                if(xhr != null) {
                    xhr.abort();
                }
            },
success:function(){}

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...