2012-08-21 14 views
5

क्रॉस-डोमेन AJAX अनुरोध (jQuery 1.7.2 का उपयोग करके किए गए) को क्रॉस-डोमेन AJAX अनुरोध IE9 में नहीं किया जाता है जब तक कि अनुरोध डेटा टाइप "jsonp" या "script" पर सेट न हो।आईई 9

मैंने इस मुद्दे को एक अनुरोध तैयार करने में खोजा जहां मुझे प्रतिक्रिया और बाएं डेटा की परवाह नहीं थी टाइप निर्दिष्ट नहीं (हाँ, मुझे पता है कि मुझे प्रतिक्रिया की परवाह करनी चाहिए)।

तो, उदाहरण के लिए, इस काम करेगा:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET", // or "POST" 
    dataType: 'jsonp' 
}); 

लेकिन यह ऐसा नहीं करेंगे:

$.ajax({ 
    url: "http://www.google.com", 
    type: "GET" // or "POST" 
}); 

"काम" से मेरा मतलब है कि मैं एक HTTP Firebug या F12 में किए गए अनुरोध को देखने के ।

दोनों अनुरोध अन्य ब्राउज़रों में काम करते हैं। jQuery.support.cors = true; सेट करना सफलता को प्रभावित नहीं करता है, न ही क्रॉसडोमेन को सत्य पर सेट करता है और न ही झूठ को कैश करता है (AJAX अनुरोध में)।

एजेक्स अनुरोध की सफलता क्यों डेटा पर निर्भर है टाइप टाइप केवल आईई में अनुरोध किया? मैं समझ सकता हूं कि यह किसी भी लौटाए गए डेटा के साथ काम करने की मेरी क्षमता को क्यों प्रभावित करेगा; मैं यह भी समझता हूं कि कुछ सर्वर एक निश्चित डेटा टाइप के लिए सभी अनुरोधों को अस्वीकार कर सकते हैं (लेकिन यह स्पष्ट रूप से यहां मामला नहीं है)।

+3

आपको यह समझने की आवश्यकता है कि JSONP क्या है। – SLaks

+0

क्या आपको इसका समाधान मिला? मेरे पास एक ही समस्या है, IE9 + jQuery 1.7.2 मेरे वेबएपीआई में क्रॉस डोमेन AJAX पोस्ट कर रहा है। मेरे पास सर्वर पक्ष पर उचित सीओआरएस समर्थन है जो एफएफ/क्रोम/सफारी को ठीक से काम करने की अनुमति देता है। आईई 9 बस सीओआरएस समर्थन निर्धारित करने के लिए प्री-फ्लाइट विकल्प अनुरोध जारी करने से इंकार कर देता है ... – mellodev

उत्तर

1

यह डेटाटाइप का सवाल नहीं है लेकिन ब्राउज़र में स्पष्ट रूप से सत्यापित करने का सवाल है कि सर्वर वास्तव में इस क्वेरी का उत्तर देना चाहता है।

JSONP लगाकर आप सर्वर को एक बहुत ही विशिष्ट उत्तर (विधि कॉल सहित) के लिए मजबूर करते हैं।

नोट वहाँ अब अन्य समाधान कर रहे हैं: सर्वर पर आप सेट कर सकते हैं,, विशिष्ट हेडर (देखें https://developer.mozilla.org/en-US/docs/HTTP_access_control)

0

आपको क्रॉस-डोमेन ajax प्रदर्शन कर रहे हैं पृष्ठ पुनः लोड करने के बिना प्रपत्र पदों को संभालने के लिए कहता है, डेटा प्रकार की स्थापना "स्क्रिप्ट" के लिए मेरे लिए काम किया।

मुझे यह जानने के बारे में अधिक जानने के लिए जानकारी के विश्वसनीय लिंक में बहुत दिलचस्पी होगी। मैंने अपने बालों को दो दिनों तक खींच लिया, यह समझ में नहीं आया कि क्यों सभी ब्राउज़र लेकिन आईई 9 काम कर रहे थे।

@dystroy हेडर में डालने के बाद भी, कि एफएफ काम करने की अनुमति है, लेकिन जब तक मैं स्क्रिप्ट डेटा प्रकार

-2

आप उस के लिए एक लंबे स्क्रिप्ट लिखने की जरूरत नहीं है इस्तेमाल किया IE9 में एक diffrence नहीं किया। बस बस इस कोड को नीचे जोड़ें और जादू देखें।

$(document).ready(function(){ 
jQuery.support.cors = true; 
// call your other functions below..... 
}) 
+0

यह एक पुराना सवाल है कि मुझे आगे बढ़ने में वास्तव में दिलचस्पी नहीं है, लेकिन कृपया ध्यान दें कि मेरे प्रारंभिक पोस्ट में मैं कहता हूं कि मैंने सेटिंग करने की कोशिश की 'jQuery.support.cors' गुण 'सत्य' पर। –

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