Saltar al contenido

¿Cómo cancelar / abortar la solicitud jQuery AJAX?

Solución:

El método jquery ajax devuelve un objeto XMLHttpRequest. Puede utilizar este objeto para cancelar la solicitud.

XMLHttpRequest tiene un método de cancelación, que cancela la solicitud, pero si la solicitud ya ha sido enviada al servidor, entonces el servidor procesará la solicitud incluso si abortamos la solicitud pero el cliente no esperará / manejará la respuesta.

El objeto xhr también contiene un readyState que contiene el estado de la solicitud (UNSENT-0, OPENED-1, HEADERS_RECEIVED-2, LOADING-3 y DONE-4). podemos usar esto para verificar si se completó la solicitud anterior.

$(document).ready(
    var xhr;

    var fn = function(){
        if(xhr && xhr.readyState != 4){
            xhr.abort();
        }
        xhr = $.ajax({
            url: 'ajax/progress.ftl',
            success: function(data) {
                //do something
            }
        });
    };

    var interval = setInterval(fn, 500);
);

Cuando realice una solicitud a un servidor, haga que primero verifique si un progreso no es nulo (o si está obteniendo esos datos). Si está obteniendo datos, cancele la solicitud anterior e inicie la nueva.

var progress = null

function fn () {    
    if (progress) {
        progress.abort();
    }
    progress = $.ajax('ajax/progress.ftl', {
        success: function(data) {
            //do something
            progress = null;
        }
    });
}

Sé que esto podría ser un poco tarde, pero experimento problemas similares en los que llamar al método de aborto realmente no canceló la solicitud. en cambio, el navegador todavía estaba esperando una respuesta que nunca usa. este código resolvió ese problema.

 try {
        xhr.onreadystatechange = null;
        xhr.abort();
} catch (e) {}
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *