t-alexashka
@t-alexashka
Сразу пишу legacy код

Как определить что в данный момент выполнется AJAX?

Добрый вечер товарищи друзья.

Есть ajax-запросы, параллельное выполнение которых я блокируя создавая глобальную переменную
is_ajax = false;
а в момент выполнения какого-либо ajax я проверяю если is_ajax = true то выхожу из ф-ии, а если false то ставлю is_ajax = true и выполняю запрос. после успешного/неуспешного выполнения меняю на is_ajax = false, тем самым даю добро на выполнение других ф-ии. Таким образом пока один запрос не выполнится с любым результатом - другой запустить не получится.

Схематически это приблизительно так:
var is_ajax = false;
function getPages() {
  if(is_ajax) return;
  is_ajax = true;
  $.post(...)
  .success(function(r){... is_ajax = false; })
  .fail(function(r){ ... is_ajax = false; })
}


Собственно сам вопрос: можно это как то упростить? Есть может событие какое аля xhr.onStart xhr.onEnd ? или какие у вас еще идеи? потому что мой подход мне кажется немного граблями.
  • Вопрос задан
  • 252 просмотра
Пригласить эксперта
Ответы на вопрос 3
@Coder321
Сделайте простую очередь для запросов да и все.
Ответ написан
Комментировать
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
// Если к нам идёт Ajax запрос, то ловим его
echo 'Это ajax запрос!';
exit;
}
//Если это не ajax запрос
echo 'Это не ajax запрос!';
попробуй так, если разберёшь
Ответ написан
Комментировать
string15
@string15
Учусь верстать руками
Уделите пару часов промисам, вы откроите новую силу!))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы