Pregunta

Cómo llamar a los estados listos Ajax en el método $.ajax jQuery?

¿Fue útil?

Solución

$.ajax() devuelve el objeto XMLHttpRequest, por lo que si realmente desee acceder a ella como los cambios de estado, se puede hacer esto:

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

Pero la incorporada en las devoluciones de llamada debe ser todo lo que necesita para la mayoría de usos, particularmente success y complete.

Para hacer las cosas antes de los disparos de solicitud, el uso beforeSend, o más apropiadamente para la mayoría de los casos, el .ajaxStart() y .ajaxStop() eventos ... por ejemplo para mostrar un mensaje de carga cada vez que cualquier actividad Ajax está pasando.

Otros consejos

Método, probado 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: "..."
});

Básicamente, lo que necesitaba era una devolución de llamada después de readyState convierte 1 (conectado), que, en mi caso, era útil en la aplicación de sondeo largo notificaciones "push" con jQuery.

debería ser capaz de conseguir todo lo que necesita mediante el establecimiento de llamadas para las success, error y opciones complete en el objeto se pasa al método ajax(). Echar un vistazo a la documentación:

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

Básicamente, funciona así:

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

Se puede ver la documentación de exactamente qué parámetros se tiene acceso a las funciones de devolución de llamada.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top