Как получить Jquery Ajax Readystates - PullRequest
5 голосов
/ 28 марта 2011

как я могу узнать readystates запроса ajax через jquery? В общем случае, без использования jquery, мы будем отправлять запрос ajax так:

http.open("POST", url, true);

http.onreadystatechange = function() { 
    if(http.readyState == 4 && http.status == 200) {
        // do something
    }
}

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

Но с помощью вызова jquery ajax, как я могу отслеживать значения readystate?

Я делаю ajax-вызов через jquery, как это:

$.post('ajax/test.html', function(data) {
  $('.result').html(data);
});

Ответы [ 3 ]

11 голосов
/ 28 марта 2011

Ознакомьтесь с документацией $.ajax. У вас есть возможность передавать различные обратные вызовы (возможно, не для того, чтобы вывести «готовое состояние», но достаточно для индикатора):

beforeSend(jqXHR, settings) Функция
Функция обратного вызова перед запросом, которую можно использовать для изменения объекта jqXHR (в jQuery 1.4.x, XMLHTTPRequest) перед его отправкой. Используйте это для установки пользовательских заголовков и т. Д. Карты jqXHR и settings передаются в качестве аргументов. Это Ajax Event. Возвращение false в функции beforeSend отменяет запрос. Начиная с jQuery 1.5, опция beforeSend будет вызываться независимо от типа запроса.

success(data, textStatus, jqXHR) Функция, Массив
Функция, вызываемая в случае успешного выполнения запроса. Функция получает три аргумента: data, возвращаемый с сервера, отформатированный в соответствии с параметром dataType; строка, описывающая статус; и объект jqXHR (в jQuery 1.4.x, XMLHttpRequest). Начиная с jQuery 1.5, настройка успеха может принимать массив функций. Каждая функция будет вызываться по очереди. Это Ajax Event .

error(jqXHR, textStatus, errorThrown) Функция
Функция, вызываемая в случае сбоя запроса. Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел. Возможные значения для второго аргумента (кроме null): "timeout", "error", "abort" и "parsererror". Это Ajax Event . Начиная с jQuery 1.5, параметр error может принимать массив функций. Каждая функция будет вызываться по очереди. Примечание. Этот обработчик не вызывается для междоменных сценариев и запросов JSONP.

complete(jqXHR, textStatus) Функция, Массив
Функция, вызываемая при завершении запроса (после выполнения обратных вызовов success и error). Функция получает два аргумента: объект jqXHR (в jQuery 1.4.x, XMLHTTPRequest) и строку, классифицирующую статус запроса ("success", "notmodified", "error", "timeout", "abort" или "parsererror"). Начиная с jQuery 1.5, параметр complete может принимать массив функций. Каждая функция будет вызываться по очереди. Это Ajax Event .

Поэтому лучше всего было бы показать индикатор в обратном вызове, переданном на beforeSend, и спрятать его в complete.


Пример:

Так что вам придется переписать ваш код как:

$.ajax({
  url: 'ajax/test.html',
  type: 'POST',
  beforeSend: function() {
       // show indicator
  },
  complete: function() {
      // hide indicator
  },
  success: function(data) {
      $('.result').html(data);
  }
});

хотя я не понимаю, почему вы используете POST, поскольку вы не отправляете никаких данных (по крайней мере, в вашем примере кода).

1 голос
/ 28 марта 2011

использование

$.ajax({
 url:,
success:function(){

}//This is ready state 4
});

perform necessary action like showing a loading icon when readystate is 1.

для этого вы можете использовать ajaxStart и ajaxStop

0 голосов
/ 28 марта 2011

http://api.jquery.com/category/ajax/ Я думаю, вы найдете здесь различные события, соответствующие разным состояниям.

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