2010-12-04 39 views
6

Estoy desarrollando una extensión de Firefox que utiliza una solicitud de Ajax para recuperar información. Este es el código:jQuery ajax cache ¿no funciona?

$.ajax({ 
     url: "http://127.0.0.1/foo/bar/Service?wsdl" + new Date().getTime(), 
     beforeSend: function(request) { request.setRequestHeader("SOAPAction", "Group"); },   
     async: false, 
     cache: false, 
     type: "POST", 
     dataType: "xml", 
     data: req, 
     contentType: "text/xml; charset=\"utf-8\"", 
     success: function (data, textStatus, xmlHttpRequest) { 
     out = $(xmlHttpRequest.responseXML); 
     } 
    }); 

sigo teniendo el mismo resultado, cuando se cambia la información que se envía al servidor. Traté de evitar eso agregando "new Date(). GetTime()" a la URL y "cache: false". Esto no parece funcionar. Después de reiniciar el navegador, obtengo los resultados correctos.

¿Alguien tiene una idea de cuál es el problema? ¿Hay algún tipo de manejo de sesión, por lo que el servidor aún devuelve la respuesta anterior?

Editar: Hice un montón de pruebas y depuración y creo que encontré el problema: hay una cookie guardada con cada solicitud ajax que contiene una identificación de sesión, por lo que cada vez que hago la solicitud de nuevo, el servidor envía datos de la sesión con el ID de sesión en la cookie. Muy mal comportamiento, no sabía que las cookies podrían crearse a través de una solicitud de Ajax. Entonces, todo lo que tengo que hacer para solucionar el problema es una función que elimina esta cookie cada vez que se modifican mis parámetros. Gracias por su ayuda de nuevo.

+0

¿Has probado alguna de esas sugerencias? – kobe

+0

Sí, probé ambas sugerencias ahora (por el Dr. Molle y por el gobierno), pero el comportamiento sigue siendo el mismo. – Bob

+1

¿está haciendo algo de almacenamiento en caché en el servidor? – kobe

Respuesta

8

Se puede tratar este

$(document).ready(function() { 
    $.ajaxSetup({ cache: false }); 
}); 

toger intento con Math.random() para estar en el lado seguro

Fecha(). GetTime() junto con Math.random()

http://127.0.0.1/foo/bar/Service?wsdl" + new Date().getTime() + Math.random() 
1

probar un símbolo de unión antes de la fecha y hora:

http://127.0.0.1/foo/bar/Service?wsdl&" + new Date().getTime() 

Supongo que el parámetro wsdl tiene sentido allí dentro de la url, sin el ampersand se destruye el parámetro.