2010-12-04 17 views
6

मैं एक फ़ायरफ़ॉक्स एक्सटेंशन विकसित कर रहा हूं जो जानकारी पुनर्प्राप्त करने के लिए AJAX अनुरोध का उपयोग करता है। यह कोड है:jQuery AJAX कैश काम नहीं कर अक्षम अक्षम?

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

मुझे अभी भी वही परिणाम मिलता है, जब सर्वर पर भेजा गया डेटा बदल जाता है। मैंने यूआरएल और "कैश: झूठी" में "नई तिथि()। GetTime()" जोड़कर उस से बचने की कोशिश की। यह काम नहीं लग रहा है। ब्राउज़र को पुनरारंभ करने के बाद, मुझे सही परिणाम मिलते हैं।

क्या किसी को पता है कि समस्या क्या है? क्या कोई सत्र-हैंडलिंग है, तो सर्वर अभी भी पुरानी प्रतिक्रिया वापस देता है?

संपादित करें: मैंने बहुत सी परीक्षण और डिबगिंग की है और मुझे लगता है कि मुझे समस्या मिली है: प्रत्येक एजेक्स-अनुरोध के साथ एक कुकी सहेजी गई है जिसमें एक सत्र-आईडी है, इसलिए हर बार जब मैं अनुरोध करता हूं, सर्वर कुकी में सत्र-आईडी के साथ सत्र का डेटा भेजता है। वास्तव में बुरा व्यवहार, मुझे नहीं पता था कि कुकीज़ को AJAX अनुरोध के माध्यम से बनाया जा सकता है। तो समस्या को ठीक करने के लिए मुझे जो कुछ करना है, वह एक ऐसा फ़ंक्शन है जो हर बार मेरे पैरामीटर बदले जाने पर इस कुकी को हटा देता है। आपने जो मदद दी उसके लिए फिर से धन्यवाद।

+0

क्या आपने इनमें से किसी भी सुझाव का प्रयास किया है ?? – kobe

+0

हाँ, मैंने अब दोनों सुझावों की कोशिश की (डॉ मोल और जीओवी द्वारा), लेकिन व्यवहार अभी भी वही है। – Bob

+1

यह है, क्या आप सर्वर की तरफ कोई कैशिंग कर रहे हैं ??? – kobe

उत्तर

8

आप math.random() के साथ सुरक्षित पक्ष

तिथि()। GetTime (पर होने की math.random() के साथ इस

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

कोशिश toger कोशिश कर सकते हैं)

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

टाइमस्टैम्प से पहले एक ampersand का प्रयास करें:

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

मुझे लगता है कि wsdl-पैरामीटर यूआरएल के अंदर समझ में आता है, बिना एम्पर्सेंड के पैरामीटर को नष्ट कर देता है।

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