2010-05-06 16 views
9

मैं निम्नलिखित कोडjQuery IE में AJAX अनुरोध कैश भले ही कैश: "गलत"

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

क्रोम आदि में अनुरोध कैश नहीं कर रहे हैं, लेकिन वे IE में कर रहे हैं स्थापित किया जाएगा। क्या मैं अपना अनुरोध सही तरीके से बना रहा हूं?

उत्तर

22

cache एक बूलियन, न कोई स्ट्रिंग होना चाहिए:

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

+1 स्ट्रिंग '" झूठी "को 'सत्य' के रूप में व्याख्या किया जाएगा यदि' === 'का उपयोग करके तुलना नहीं की जाती है। –

+4

@ पेक्का - यह सच है, लेकिन इस विशिष्ट मामले में, [jQuery की तुलना ===] (http://github.com/jquery/jquery/blob/master/src/ajax.js#L261) से तुलना की जाती है, हालांकि यह यदि कैश से बचने का प्रयास केवल 's.cache === false' (लेकिन निश्चित रूप से," झूठा "=== झूठा => झूठा) – Matt

+0

@ मैट आह! अच्छी पकड़। –

0

शायद यह आपके द्वारा लौटाई जा रही एक्सएमएल फ़ाइल का नकल है?

मैं कैश .ajaxSetup में बंद करने के लिए स्थापित करने में विश्वास नहीं करने जा रहा हूँ ...: अपने ब्लॉग पर http://www.nerdydork.com/ie-json-caching-bug.html

एक टिप्पणीकार json अनुरोध करने के लिए एक समय स्ट्रिंग जोड़ने का सुझाव दिया।

तो प्रत्येक जेसन अनुरोध के अंत पर बस एक समय स्ट्रिंग जोड़ें, उदा।

$ .getJSON ('/ यूआरएल /', {डेटा: 123, टी:। (नई तिथि()) getTime()}, समारोह (डेटा) {// कर जो कुछ भी});

+0

'मैं कैश .ajaxSetup में बंद करने के लिए स्थापित करने में विश्वास नहीं करने जा रहा हूँ ...' - क्यों ??? यह _exactly_ वही बात करता है! – WoIIe

+0

समय चाल ने यह किया, धन्यवाद! – Robert

संबंधित मुद्दे