WedX - журнал о программировании и компьютерных науках

Функция триггера глобального события $.ajax для определенного вызова ajax

У меня есть 3-4 вызова ajax, которые будут сделаны в какой-то момент. Для одного из этих вызовов я хотел бы вызвать функцию для события ajaxSend, которое является глобальным. Этот конкретный вызов ajax не обязательно является первым или последним в последовательности. Кажется, что если я присоединю событие ajaxSend к $(document), моя функция будет срабатывать каждый раз, когда происходит событие ajaxSend. Вот как выглядит мой код:

//ajax call one
$.ajax({
    type: "POST",
    url: myUrl,
    data: myData
});

//ajax call two <- let's say I'd like to fire ajaxSpecificFunc() here
$.ajax({
    type: "POST",
    url: myUrl,
    data: myData
});

//ajax call three
$.ajax({
    type: "POST",
    url: myUrl,
    data: myData
});


function ajaxSpecificFunc(){
    $(document).on("ajaxSend", function() {
        //Some code that should only happen on ajaxSend but for only one ajax call
    });
}

РЕДАКТИРОВАТЬ: я знаю о свойстве global:false для ajax, но не хочу его использовать, так как это будет означать, что мне придется изменять каждый новый вызов ajax в будущем, чтобы ajaxSpecificFunc() продолжал срабатывать для одного конкретного вызова ajax

15.12.2015

  • Почему бы просто не добавить ajaxSpecificFunc в обратный вызов always или beforeSend для вашего конкретного вызова AJAX? 15.12.2015
  • Вы должны связать глобальный метод ajax для всех запросов и отфильтровать его, чтобы использовать его только для конкретного запроса относительно того, какую конкретную опцию data/url/ajax вы передаете этому запросу. Теперь, если все ваши запросы ajax похожи на ваш опубликованный код, это все равно не имеет смысла... 15.12.2015

Ответы:


1

Вы можете добавить beforeSend в jQuery.ajax():

$.ajax({
    type: "POST",
    url: myUrl,
    data: myData,
    beforeSend: ajaxSpecificFunc
});

Как заметил A.Wolff, таким образом, если мы вызовем эту функцию, она будет связывать ajaxsend для каждого вызова. Вместо этого вы можете удалить его и просто выполнить определенные действия, например:

function ajaxSpecificFunc(jqXHR, settings){
   // you can work with the jqXhr and settings
}
15.12.2015
  • Вы будете привязывать событие к каждому вызову, и в любом случае я уверен, что для первого будет слишком поздно 15.12.2015
  • @A.Wolff, ты его подобрал. 15.12.2015

  • 2

    Если вы не можете напрямую привязать обработчик к вызову ajax и хотите использовать только глобальные обработчики, вы можете проверить объект настройки, чтобы увидеть, на что нацелен вызов ajax, и если да, то вызовите свои вещи.

    $(document).ajaxSend(function(event, jqXHR, settings) {
      console.log('send', settings);
      if (settings.url == 'myurl') {
        //then do your stuff
      }
    })
    

    Примечание. Но это может стать излишним, и вы должны попытаться сделать это конкретно для вашего вызова ajax.

    15.12.2015
    Новые материалы

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..

    Учебные заметки: создание моего первого пакета Node.js
    Это мои обучающие заметки, когда я научился создавать свой самый первый пакет Node.js, распространяемый через npm. Оглавление Глоссарий I. Новый пакет 1.1 советы по инициализации..

    Забудьте о Matplotlib: улучшите визуализацию данных с помощью умопомрачительных функций Seaborn!
    Примечание. Эта запись в блоге предполагает базовое знакомство с Python и концепциями анализа данных. Привет, энтузиасты данных! Добро пожаловать в мой блог, где я расскажу о невероятных..

    ИИ в аэрокосмической отрасли
    Каждый полет – это шаг вперед к великой мечте. Чтобы это происходило в их собственном темпе, необходима команда астронавтов для погони за космосом и команда технического обслуживания..


    Для любых предложений по сайту: [email protected]