Вопрос

Как вызвать готовных состояний AJAX на JQuery $.ajax Метод?

Это было полезно?

Решение

$.ajax() Возвращает объект XMLHTTPREQUEST, так что если вы В самом деле Хотите получить доступ к нему в качестве изменения состояния, вы можете сделать это:

var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };

Но встроенные обратные вызовы должны быть все, что вам нужно для большинства целей, особенно success и complete.

Делать вещи до запроса пожаров, используйте beforeSend, или более правильно для большинства случаев, .ajaxStart() и .ajaxStop() События ... Например, чтобы показать сообщение погрузки всякий раз, когда происходит любая активность Ajax.

Другие советы

Метод, проверенный с jQuery 2.0.2:

$.ajax({
    beforeSend: function (jqXHR, settings) {
        var self = this;
        var xhr = settings.xhr;
        settings.xhr = function () {
            var output = xhr();
            output.onreadystatechange = function () {
                if (typeof(self.readyStateChanged) == "function") {
                    self.readyStateChanged(this);
                }
            };
            return output;
        };
    },
    readyStateChanged: function (xhr) {
        if (xhr.readyState == 1) {
            /* Connected! Do something */
        }
    },
    url: "..."
});

В основном, что мне нужно было обратный вызов после readyState становится 1 (Подключен), который в моем случае был полезен при внедрении длинного опроса «толчка» уведомлений с jQuery.

Вы должны быть в состоянии получить все, что вам нужно, установив обратные вызовы для success, error, и complete варианты в объекте, который вы переходите в ajax() метод. Посмотрите на документацию:

http://api.jquery.com/jquery.ajax/

В основном это работает так:

$.ajax({
    url: 'ajax/test.html',
    success: function(data) {
        alert('Load was performed.');
    },
    error: function() {alert("error occurred.")},
    complete: function() {alert("ajax complete.")}
});

Вы можете увидеть документы для именно, какие параметры у вас есть доступ к функциям обратного вызова.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top