jQuery $ .ajax e readyStates
-
29-09-2019 - |
Domanda
Come chiamare gli stati pronti Ajax sul metodo $.ajax
jQuery?
Soluzione
$.ajax()
restituisce l'oggetto XMLHttpRequest, quindi se si davvero vogliono accedervi come i cambiamenti di stato, si può fare questo:
var xhr = $.ajax({ ... });
xhr.onreadystatechange = function() { alert(xhr.readyState); };
Ma il built-in callback dovrebbe essere tutto il necessario per la maggior parte degli usi, in particolare success
e complete
.
Per fare le cose prima che i fuochi di richiesta, l'uso beforeSend
, o più appropriatamente per la maggior parte dei casi, il .ajaxStart()
e .ajaxStop()
eventi ... per esempio per mostrare un messaggio di carico ogni volta che qualsiasi attività Ajax sta succedendo.
Altri suggerimenti
Metodo testato con 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: "..."
});
In sostanza, quello che mi serviva era una richiamata dopo readyState
diventa 1
(Collegato), che, nel mio caso, è stato utile in sede di attuazione lunghi elettorali notifiche "push" con jQuery.
Si dovrebbe essere in grado di ottenere tutto ciò che serve impostando callback per i success
, error
, e le opzioni complete
nell'oggetto si passa al metodo ajax()
. Date un'occhiata alla documentazione:
http://api.jquery.com/jQuery.ajax/
In pratica, funziona in questo modo:
$.ajax({
url: 'ajax/test.html',
success: function(data) {
alert('Load was performed.');
},
error: function() {alert("error occurred.")},
complete: function() {alert("ajax complete.")}
});
È possibile visualizzare la documentazione per esattamente quali parametri si ha accesso a delle funzioni di callback.