2010-05-06 3 views
9

gesetzt habe ich den folgenden CodejQuery-Caches AJAX-Request in IE, obwohl Cache: "false"

$.ajax({type: "GET", 
    url: "/" + filename, 
    dataType: "xml", 
    cache: "false", 
    success: function(xml) 
{ 
    /* Parsing code here */ 
}}); 

In Chrome usw. die Anfragen nicht im Cache gespeichert werden, aber sie in IE sind. Baue ich meine Anfrage richtig?

Antwort

22

cache sollte ein boolean sein, kein String:

$.ajax({type: "GET", 
    url: "/" + filename, 
    dataType: "xml", 
    cache: false, 
    success: function(xml){ 
    /* Parsing code here */ 
    } 
}); 
+2

+1 eine Zeichenkette '" false "' wird als 'wahr' interpretiert, wenn sie nicht mit' === 'verglichen wird. –

+4

@Pekka - das stimmt, aber in diesem speziellen Fall, [jQuery DOES Vergleiche mit ===] (http://github.com/jquery/jquery/blob/master/src/ajax.js#L261), aber es nur versucht, Cache zu vermeiden, wenn 's.cache === false' (aber natürlich," falsch "=== falsch => falsch) – Matt

+0

@Matt ah! Guter Fang. –

0

Vielleicht ist es der MIME-Typ der XML-Datei, die Sie zurückgeben? http://www.nerdydork.com/ie-json-caching-bug.html

Ein Kommentator auf meinem Blog schlug eine Zeit Zeichenfolge an die json Anfrage hinzufügen:

Ich werde vertrauen nicht den Cache bei der Einrichtung in .ajaxSetup ausgeschaltet ....

Also nur eine Zeit Zeichenfolge am Ende von jedem JSON-Anfrage, z.

$ .getJSON (‚/ url /‘, {Daten: 123, t. (new Date()) getTime()}, Funktion (Daten) {// tun, was});

+0

'Ich werde vertrauen den Cache nicht bei der Einrichtung in .ajaxSetup ausgeschaltet ...' - Warum ??? Es macht _exactly_ die gleiche Sache! – WoIIe

+0

Der Zeittrick hat es geschafft, danke! – Robert

Verwandte Themen