2009-08-17 20 views
12

Resulta que este fue un artefacto de un error de Firebug. La solicitud de Ajax fue cancelada, pero Firebug continuó informándola como activa. Detalles here.Cancelando un jQuery getJSON XMLHttpRequest


He estado ejecutando XMLHttpRequests y necesito poder abortar bajo ciertas circunstancias.

He definido la petición de una manera normal:

ajax = $.getJSON(url + "?updates", function(data) { ...; }); 

Más adelante quiero abortar esta solicitud, parece sencillo:

ajax.abort(); 

Cuando miro en Firebug sin embargo, yo lo veo todavía se está ejecutando ...

Yo console.log el valor de ajax justo antes de intentar abortarlo, confirma que su valor es XMLHttpRequest (con un readyState de 0).

¿Existen restricciones sobre cómo y cuándo abort() se desencadena en XMLHttpRequest?

+0

¿Qué versión de FF? –

+0

La versión es Linux 3.0.13 –

Respuesta

2

Cancelación de llamada restablece el objeto; el controlador de eventos onreadystatechange se elimina y readyState se cambia a 0 (sin inicializar).

No creo que cancele la solicitud en sí, simplemente ignora cualquier respuesta (manipulando el controlador de eventos) - pero realmente no la probé todavía.

pero definitivamente le permitirá reutilizar el objeto, sin importar si el navegador todavía tiene algún hilo trabajando con la solicitud anterior.

+1

¿Quién está citando? –

+0

Aah !. El problema es que termino con demasiadas solicitudes http y el navegador se cuelga, así que tengo que terminarlo ... –

+0

la cita es del documento javascript de Microsoft. De esto, supongo que depende en gran medida de la implementación del navegador, exactamente qué está sucediendo.la mayoría de los navegadores probablemente tratarán de terminar con elegancia, por lo que las conexiones podrían continuar activas hasta que finalmente se cierren, pero eso es solo una suposición. – Niko

2

puede echar un vistazo a JSONP-Plugin Con este complemento tiene la capacidad de abortar manualmente la solicitud. también echar un vistazo a "a cautionary note" en la biblioteca técnica de IBM:

En primer lugar, no hay ninguna manipulación para JSONP llama error. Si la inserción del script dinámico funciona, se te llama; si no, no pasa nada. Simplemente falla silenciosamente. Por ejemplo, no puede detectar un error 404 del servidor. Tampoco puede cancelar o reiniciar la solicitud.

Cuestiones relacionadas