Domanda

Come chiamare gli stati pronti Ajax sul metodo $.ajax jQuery?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top