2010-12-29 13 views
6

मैं jQuery 1.4.2 का उपयोग कर रहा हूं और एक साधारण AJAX अनुरोध करने की कोशिश कर रहा हूं। लक्ष्य यूआरएल एक JSON स्ट्रिंग देता है (मैंने इसे jslint के साथ मान्य किया है)। अनुरोध फ़ायरफ़ॉक्स और क्रोम में काम करता है, लेकिन IE8 में काम नहीं करना चाहता, और मैं यह निर्धारित नहीं कर सकता कि क्यों। यहां कॉल है:jQuery AJAX अनुरोध संदेश के साथ आईई 8 में विफल रहा है 'त्रुटि: खुली विधि कहलाए जाने तक इस विधि को तब तक नहीं बुलाया जा सकता है।'

jQuery.ajax({ 
url: 'http://' + domain + '/' + 'helper/echo/', 
dataType: 'json', 
success: function(data) { 
alert(data); 
}, 
beforeSend: function(request, settings) { 
alert('Beginning ' + settings.dataType + ' request: ' + settings.url); 
}, 
complete: function(request, status) { 
alert('Request complete: ' + status); 
}, 
error: function(request, status, error) { 
alert(error); 
} 
}); 

आईई पहले से कॉलबैक और त्रुटि कॉलबैक निष्पादित करेगा। संदेश के साथ त्रुटि कॉलबैक अलर्ट: Content-Type: text/javascript; charset=UTF-8 साथ

Error: This method cannot be called until the open method has been called. 

मेरा जवाब हैडर रिटर्न।

आईई के साथ क्या चल रहा है? मैं स्थानीयहोस्ट पर सर्वर चला रहा हूं, http://localhost:8080/psx से http://localhost:8080/helper पर अनुरोध कर रहा हूं। शायद आईई इस अनुरोध को अवरुद्ध कर रहा है? मैंने अनुरोध ट्रैफ़िक का विश्लेषण करने के लिए फिडलर को स्थापित करने का प्रयास किया है, लेकिन यह मेरी मशीन पर नहीं चलेगा क्योंकि यह लॉक हो गया है। फायरबग मुझे देता है, लेकिन सब कुछ अच्छा लगता है।

मदद के लिए धन्यवाद !!!

+0

कोशिश 'की स्थापना async: FALSE' और इसे फिर से प्रयास करें। –

+0

दुर्भाग्य से इसका कोई प्रभाव नहीं पड़ा। मुझे यह भी जिक्र करना चाहिए कि त्रुटि कॉलबैक स्थिति शून्य है। – checker

उत्तर

14

ठीक है, यह ठीक है! अनुरोध window.XMLHttpRequest() का उपयोग कर रहा था, जो किसी कारण से IE8 में ठीक से काम नहीं कर रहा है। jQuery window.ActiveXObject("Microsoft.XMLHTTP") पर वापस असफल नहीं हो रहा है जैसा कि इसे करना चाहिए।

आपके AJAX कॉल करने से पहले कहीं अपनी स्क्रिप्ट को यह जोड़ें (केवल IE8, नहीं अन्य IE के में सत्यापित):

  1. jQuery 1.4 अपडेट किया गया:

    jQuery.ajaxSetup({ 
          xhr: function() { 
            //return new window.XMLHttpRequest(); 
            try{ 
             if(window.ActiveXObject) 
              return new window.ActiveXObject("Microsoft.XMLHTTP"); 
            } catch(e) { } 
    
            return new window.XMLHttpRequest(); 
           } 
         }); 
    

    यहाँ कैसे मैं समाधान के लिए आया है .4 अगर समस्या एक बग था जो तय किया गया था।

  2. फ़ायरबग डीबगर और देवटूल डीबगर के माध्यम से कदम उठाए जब तक कि परिणाम काफी अलग नहीं लगते।
  3. लाइन 5899 पर, AJAX() फ़ंक्शन xml() फ़ंक्शन के साथ XmlHttpRequest ऑब्जेक्ट बनाता है। फ़ायरफ़ॉक्स में, यह अच्छा डेटा लौटा रहा था। आईई में, यह सभी क्षेत्रों में किया जा रहा Error: This method cannot be called until the open method has been called.
  4. साथ लौट रहा था मैं लाइन 5749 पर इस समारोह, return new window.XMLHttpRequest();
  5. मैं googled का विश्लेषण किया और इस page एक ही समस्या है कि में आए और समाधान है कि मेरे लिए काम करता सुझाव दिया।
  6. Official jQuery ticket: