jquery $ .ajax и headystestes
-
29-09-2019 - |
Вопрос
Как вызвать готовных состояний 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.")}
});
Вы можете увидеть документы для именно, какие параметры у вас есть доступ к функциям обратного вызова.