2010-12-04 4 views
6

Je développe une extension Firefox qui utilise une requête ajax pour récupérer des informations. C'est le code:jQuery Ajax cache désactivation ne fonctionne pas?

$.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); 
     } 
    }); 

Je reçois toujours le même résultat lorsque les données envoyées au serveur sont modifiées. J'ai essayé d'éviter cela en ajoutant "new Date(). GetTime()" à l'URL et "cache: false". Cela ne semble pas fonctionner. Après avoir redémarré le navigateur, j'obtiens les bons résultats.

Est-ce que quelqu'un a une idée du problème? Existe-t-il une sorte de gestion de session pour que le serveur restitue l'ancienne réponse? Edit: J'ai fait beaucoup de test et de débogage et je pense avoir trouvé le problème: un cookie est enregistré avec chaque requête ajax qui contient un identifiant de session, donc chaque fois que je refais la demande, le serveur envoie les données de la session avec l'identificateur de session dans le cookie. Vraiment un mauvais comportement, je ne savais pas que les cookies pouvaient être créés via une requête ajax. Donc, tout ce que je dois faire pour résoudre le problème est une fonction qui supprime ce cookie chaque fois que mes paramètres sont modifiés. Merci encore pour votre aide.

+0

avez-vous essayé l'une de ces suggestions? – kobe

+0

Oui, j'ai essayé les deux suggestions maintenant (par le Dr Molle et par gov), mais le comportement est toujours le même. – Bob

+1

est-il, faites-vous de la mise en cache sur le côté serveur? – kobe

Répondre

8

Pouvez-vous essayer cette

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

Toger try avec Math.random() pour être plus sûre côté

Date(). GetTime() avec Math.random()

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

Essayez une esperluette avant l'horodatage:

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

Je suppose que le paramètre wsdl est logique à l'intérieur de l'URL, sans que l'esperluette ne détruise le paramètre.