Проверка состояния запроса jQuery AJAX - PullRequest
3 голосов
/ 13 июня 2010

Я делаю 2 разных запроса AJAX через JQuery, и я должен проверить, другой активен или нет.Как я могу это сделать?

один из примеров из моих запросов AJAX:

active_project_categories_ajax = $.ajax(
{
    url: "/ajax/get_skill_list",
    dataType: 'json',
    ......
});

Мне нужно что-то вроде этого: active_project_categories_ajax.status ()

Ответы [ 3 ]

5 голосов
/ 13 июня 2010

, так как вы получаете объект XMLHttpRequest, вы всегда можете посмотреть на

active_project_categories_ajax.readyState
active_project_categories_ajax.status

readyState должен быть 4 для его завершения (успех или ошибка). так что если оно меньше 4, то оно все еще активно.

это готовое состояние:

// states
  const unsigned short UNSENT = 0;
  const unsigned short OPENED = 1;
  const unsigned short HEADERS_RECEIVED = 2;
  const unsigned short LOADING = 3;
  const unsigned short DONE = 4;

цитата из: http://www.w3.org/TR/XMLHttpRequest/#the-xmlhttprequest-interface

Вы не можете просмотреть статус, пока readyState не станет 4. В противном случае может возникнуть исключение. (на самом деле я написал php-файл, который возвращает 1 МБ данных ... и когда readyState был равен 3, статус также был равен 200. Я подозреваю, что статус будет равен 200, если readyState также остановится на 2).

3 голосов
/ 13 июня 2010

Это можно сделать, подписавшись на события AJAX и обновив индикатор состояния:

var status;

$.ajax({
   beforeSend: function(){
     status = 1;
   },
   complete: function(){
     status = 2;
   }
   // ...
});
1 голос
/ 13 июня 2010

Вы почти у цели, status - это свойство XMLHttpRequest, а не функция.jQuery.ajax возвращает объект XMLHttpRequest.Держитесь за это, как вы уже делаете:

var req = $.ajax(..);

Затем при необходимости вызывайте status для этого объекта, а не status()

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