दिलचस्प पोस्ट
ईएफ 4.1 अपवाद "प्रदाता ने एक प्रोवाइडरमैनफास्ट टोकन स्ट्रिंग वापस नहीं किया" गैर-मानक मूल्यांकन (एनएसई) में dplyr के फिल्टर_ और MySQL से डेटा खींच रहा है MySQL बनाम MongoDB 1000 पढ़ता है वसंत 3.1 में डिफ़ॉल्ट प्रोफ़ाइल डी 3 v4 – शून्य की संपत्ति पाठ पढ़ा नहीं जा सकता विधि अतिभारित और सबसे विशिष्ट प्रकार का चयन प्रारंभिक सूची दृश्य स्टूडियो 2012 में वेक्टर के साथ काम नहीं कर रही है? ADO.NET DataTable को एक HTML तालिका पोस्ट करें केवल अद्वितीय आगंतुकों को ट्रैक करना है? जीएचसी कोर पढ़ना अजगर: सूची बनाम ट्यूपल, प्रत्येक का उपयोग करने के लिए कब? ई -11000 डुप्लिकेट कुंजी त्रुटि इंडेक्स मोंगोडब मॉंगोज़ में अर्गेर्स सबपरर्स अखंड सहायता आउटपुट "पीडब्लू सी 6345: जवाक को शुरू करने में एक त्रुटि है।" जेटी पर जेटीपी पेज परिनियोजित करने के लिए जेटी डब्ल्यूटीपी प्लगइन का उपयोग करते समय त्रुटि कोणीय जेएस में एकाधिक मान (या ऑपरेशन) कैसे फ़िल्टर करें

jQuery। Find () आईई में डेटा वापस नहीं करता है लेकिन फ़ायरफ़ॉक्स और क्रोम में है

मैंने उसके लिए एक छोटे से वेब काम करके एक मित्र को बाहर करने में मदद की अपनी साइट पर पाठ के कुछ हिस्सों को बदलने के लिए उनके लिए जो कुछ आवश्यक था, उसका एक आसान तरीका था। एचटीएमएल को संपादित करने की बजाय मैंने उसमें संदेश के साथ एक एक्सएमएल फाइल प्रदान करने का निर्णय लिया और मैंने jQuery को उन्हें फाइल से बाहर खींचकर पृष्ठ में डाल दिया।

यह महान काम करता है … फ़ायरफ़ॉक्स और क्रोम में, आईई 7 में इतना अच्छा नहीं मुझे आशा थी कि आप में से एक मुझे बता सकता है कि क्यों मैंने एक निष्पक्ष लेकिन googling की लेकिन मैं क्या देख रहा हूँ नहीं मिल सकता है

यहां एक्सएमएल है:

<?xml version="1.0" encoding="utf-8" ?> <messages> <message type="HeaderMessage"> This message is put up in the header area. </message> <message type="FooterMessage"> This message is put in the lower left cell. </message> </messages> 

और यहां मेरा jQuery कॉल है:

 <script type="text/javascript"> $(document).ready(function() { $.get('messages.xml', function(d) { //I have confirmed that it gets to here in IE //and it has the xml loaded. //alert(d); gives me a message box with the xml text in it //alert($(d).find('message')); gives me "[object Object]" //alert($(d).find('message')[0]); gives me "undefined" //alert($(d).find('message').Length); gives me "undefined" $(d).find('message').each(function() { //But it never gets to here in IE var $msg = $(this); var type = $msg.attr("type"); var message = $msg.text(); switch (type) { case "HeaderMessage": $("#HeaderMessageDiv").html(message); break; case "FooterMessage": $("#footermessagecell").html(message); break; default: } }); }); }); </script> 

IE में मुझे कुछ अलग करने की आवश्यकता है? [ऑब्जेक्ट ऑब्जेक्ट] के साथ मेसेज बॉक्स के आधार पर मुझे लगता है कि .मैं IE में काम कर रहा था, लेकिन जब से मैं [0] के साथ सरणी में इंडेक्स नहीं कर सकता हूँ या इसकी लंबाई की जांच कर रहा हूँ, मैं इसका अनुमान लगा रहा हूं। किसी भी परिणाम लौट रहा है कोई भी कारण है कि वह फ़ायरफ़ॉक्स और क्रोम में पूरी तरह से काम करेगा लेकिन आईई में असफल होगा?

मैं jQuery के साथ एक पूरी नौसिखिया हूं इसलिए मुझे आशा है कि मैंने अभी कुछ बेवकूफ नहीं किया है। उस कोड के ऊपर एक मंच से बाहर स्क्रैप किया गया था और मेरी आवश्यकताओं के अनुरूप संशोधित किया गया था। चूंकि jQuery क्रॉस-प्लेटफॉर्म है इसलिए मुझे लगा कि मुझे इस गड़बड़ी से निपटने की ज़रूरत नहीं होगी।

संपादित करें: मैंने पाया है कि अगर मैं दृश्य स्टूडियो 2008 में पृष्ठ को लोड करता हूं और इसे चलाता हूं तो यह IE में काम करेगा। इसलिए यह पता चला है कि यह विकास वेब सर्वर के माध्यम से चलाने पर हमेशा काम करता है। अब मैं सोच रहा हूं कि आईई बस पसंद नहीं करता है। एक्सएमएल में अपने स्थानीय ड्राइव से लोड होने की जानकारी इसलिए हो सकती है जब यह वास्तविक वेब सर्वर पर हो तो यह ठीक काम करेगा।

मैंने पुष्टि की है कि वेब सर्वर से ब्राउज किए जाने पर यह ठीक काम करता है IE के साथ एक विशिष्टता होना चाहिए मुझे यह अनुमान लग रहा है क्योंकि वेब सर्वर ने एक्सएमएल डाटा फाइल ट्रांसफर के लिए माइम प्रकार सेट किया है और उस IE के बिना XML सही ढंग से पार्स नहीं करता है

Solutions Collecting From Web of "jQuery। Find () आईई में डेटा वापस नहीं करता है लेकिन फ़ायरफ़ॉक्स और क्रोम में है"

प्रतिक्रिया की सामग्री प्रकार की जांच करें यदि आपको संदेश। Xml को गलत माइम प्रकार के रूप में मिलता है, तो Internet Explorer इसे XML के रूप में पार्स नहीं करेगा।

सामग्री प्रकार की जांच करने के लिए, आपको XMLHttpRequest ऑब्जेक्ट तक पहुंच की आवश्यकता है। सामान्य सफलता कॉलबैक एक पैरामीटर के रूप में इसे पारित नहीं करता है, इसलिए आपको एक सामान्य एजेक्स पूर्ण या एजेक्सस्वेट्स ईवेंट हैंडलर जोड़ने की आवश्यकता है। उन घटनाओं के लिए दूसरा पैरामीटर XMLHttpRequest ऑब्जेक्ट है। सामग्री प्रकार प्राप्त करने के लिए आप getResponseHeader विधि को कॉल कर सकते हैं।

 $(document).ajaxComplete(function(e, x) { alert(x.getResponseHeader("Content-Type")); }); 

दुर्भाग्यवश, इंटरनेट एक्सप्लोरर के बारे में मुझे पता नहीं है कि सर्वर क्या भेजता है, इस पर कोई रास्ता नहीं है, इसलिए यदि आप गलत हैं तो आपको सामग्री प्रकार के लिए "टेक्स्ट / एक्सएमएल" भेजने के लिए सर्वर को बदलने की आवश्यकता है।

कुछ ब्राउज़रों में एक overrideMimeType पद्धति है, जिसे आप "पाठ / एक्सएमएल" का उपयोग करने के लिए मजबूर करने के लिए send से पहले कॉल कर सकते हैं, लेकिन इंटरनेट एक्सप्लोरर उस समर्थन का समर्थन नहीं करता जहाँ तक मुझे पता है।

चूंकि आईई की समस्या इसकी एक्सएमएल पार्सर XML फाइलों पर चुक्स है जो सही "पाठ / एक्सएमएल" हैडर का उपयोग करके पारित नहीं की गई है, इसलिए आप अजाक्स पूरी घटना में थोड़ी सी कोड शामिल कर सकते हैं:

     पूरा: कार्य (xhr, स्थिति)
     {
       चेतावनी ("पूर्ण। आपको मिला है: \ n \ n" + xhr.responseText);
       यदि (स्थिति == 'parsererror')
       {
         अलर्ट ("एक पार्सर था। सौभाग्य से, हम जानते हैं कि कैसे ठीक करें। \ n \ n" +
                "पूर्ण सर्वर प्रतिक्रिया पाठ था" + xhr.responseText);

         xmlDoc = नल;

         // प्रतिलिपि टेक्स्ट स्ट्रिंग से XML दस्तावेज़ बनाएं।
         // यह w3schools विधि का उपयोग करता है
         // भी देखें
         अगर (खिड़की। DOMParser)
         {
           पार्स = नया डोमपार्सर ();
           xmlDoc = parser.parseFromString (xhr.responseText, "text / xml");
         }
         // इंटरनेट एक्सप्लोरर
         {
           xmlDoc = नया ActiveXObject ("Microsoft.XMLDOM");
           xmlDoc.async = "false";
           xmlDoc.loadXML (xhr.responseText);
         }

         $ ('#response') .append ('<p> पूर्ण ईवेंट / xmlDoc:' + xmlDoc + '</ p>');
         $ ('#response') .append ('<p> पूर्ण ईवेंट / स्थिति:' + स्थिति + '</ p>');

         processXMLDoc (xmlDoc);
       }
     },

यहाँ एक और अधिक पूर्ण उदाहरण है

 <! DOCTYPE html>
 <Html>
 <Head>
 <शीर्षक> jQuery के साथ XML पढ़ना </ title>
 <Style>
 #response
 {
   सीमा: ठोस 1px काला;
   पैडिंग: 5 पीएक्स;
 }
 </ Style>
 <script src = "jquery-1.3.2.min.js"> </ script>
 <Script>
 फ़ंक्शन प्रोसेस XMLDoc (xmlDoc)
 {
   var हेडिंग = $ (xmlDoc)। ढूँढें ('शीर्षक')। पाठ ();
   $ ('#response') .append ('<h1>' + शीर्षक + '</ h1>');

   var bodyText = $ (xmlDoc)। ढूँढें ('शरीर')। पाठ ();
   $ ('#response') .append ('<p>' + bodytext + '</ p>');
 }
 $ (Document) .ready (function ()
 {
   jQuery.ajax ({

     प्रकार: "GET",

     url: "a.xml", //!  उसी के लिए देखें
     // मूल प्रकार समस्याएं

     डेटाटाइप: "एक्सएमएल", // 'एक्सएमएल' ब्राउज़र के एक्सएमएल पार्सर से गुजरता है

     सफलता: कार्य (xmldoc, स्थिति)
     {
       // सफलता कार्यक्रम का मतलब है कि XML दस्तावेज़
       // सर्वर से नीचे आ गया और सफलतापूर्वक पार्स हो गया
       // ब्राउज़र का अपना एक्सएमएल पार्सिंग कैप का उपयोग

       processXMLDoc (xmlDoc);

       // आईई बहुत परेशान हो जाता है जब
       // दस्तावेज का मीम-प्रकार
       // पास हो जाता है पाठ / xml नहीं है

       // यदि आप पाठ / xml शीर्षलेख याद कर रहे हैं
       // जाहिरा तौर पर एक्सएमएल पार्स विफल रहता है,
       // और IE में आप इस फ़ंक्शन को AT

     },
     पूरा: कार्य (xhr, स्थिति)
     {
       चेतावनी ("पूर्ण। आपको मिला है: \ n \ n" + xhr.responseText);
       यदि (स्थिति == 'parsererror')
       {
         अलर्ट ("एक पार्सर था। सौभाग्य से, हम जानते हैं कि कैसे ठीक करें। \ n \ n" +
                "पूर्ण सर्वर प्रतिक्रिया पाठ था" + xhr.responseText);

         xmlDoc = नल;

         // प्रतिलिपि टेक्स्ट स्ट्रिंग से XML दस्तावेज़ बनाएं।
         // यह w3schools विधि का उपयोग करता है
         // भी देखें
         अगर (खिड़की। DOMParser)
         {
           पार्स = नया डोमपार्सर ();
           xmlDoc = parser.parseFromString (xhr.responseText, "text / xml");
         }
         // इंटरनेट एक्सप्लोरर
         {
           xmlDoc = नया ActiveXObject ("Microsoft.XMLDOM");
           xmlDoc.async = "false";
           xmlDoc.loadXML (xhr.responseText);
         }

         $ ('#response') .append ('<p> पूर्ण ईवेंट / xmlDoc:' + xmlDoc + '</ p>');
         $ ('#response') .append ('<p> पूर्ण ईवेंट / स्थिति:' + स्थिति + '</ p>');

         processXMLDoc (xmlDoc);
       }
     },
     त्रुटि: कार्य (xhr, स्थिति, त्रुटि)
     {
       चेतावनी ('त्रुटि:' + स्थिति);
       चेतावनी (xhr.responseText);
     }
   });
 });
 </ Script>
 </ Head>
 <Body>
   <Div>
     <h1> <a href="http://think2loud.com/reading-xml-with-jquery/"> XML के साथ XML पढ़ना </a> </ h1>
     <P>
       <a href="http://docs.jquery.com/Ajax/jQuery.ajax#options"> # 1 jQuery.ajax ref </a>
     </ P>

   </ Div>

   <p> सर्वर का कहना है: </ p>
   <पूर्व आईडी = "प्रतिक्रिया">

   </ Pre>
 </ Body>
 </ Html>

a.xml की सामग्री

 <? xml संस्करण = "1.0"?>
 <टिप्पणी>
   <के लिए> टुवे </ करने के लिए>
   <से> जानी <से />
   <शीर्षक> अनुस्मारक </ शीर्षक>
   <body> मुझे इस सप्ताह के अंत में मत भूलना! </ body>
 </ टिप्पणी>

यह इस उदाहरण को बढ़ाता है

डेटाटाइप: "एक्सएमएल" IE8 में इस समस्या को ठीक नहीं करता है, बल्कि यह "टाइप एरर" एक्सपेक्शन के माध्यम से है।

त्वरित और गंदा ठीक, एक HTML तत्व में XML प्रतिक्रिया लपेट करना है, जैसे div:

 $("<div>" + xml + "</div>").find("something"); 

(सभी ब्राउज़रों में काम करता है)

आप पा सकते हैं कि यदि आप डेटा प्रकार को अपने कॉल में पास करते हैं, तो यह ठीक से XML के रूप में पार्स कर सकता है IE के quirks रोक सकता है jQuery के रूप में इसे autodetecting jQuery, जिसके परिणामस्वरूप गलत डेटा प्रकार कॉलबैक फ़ंक्शन को पारित किया जा रहा है।

 <script type="text/javascript"> $(document).ready(function() { $.get('messages.xml', function(d) { //I have confirmed that it gets to here in IE //and it has the xml loaded. //alert(d); gives me a message box with the xml text in it //alert($(d).find('message')); gives me "[object Object]" //alert($(d).find('message')[0]); gives me "undefined" //alert($(d).find('message').Length); gives me "undefined" $(d).find('message').each(function() { //But it never gets to here in IE var $msg = $(this); var type = $msg.attr("type"); var message = $msg.text(); switch (type) { case "HeaderMessage": $("#HeaderMessageDiv").html(message); break; case "FooterMessage": $("#footermessagecell").html(message); break; default: } }); }, "xml"); }); </script> 

संपादित करें:

मैं वास्तव में बस अनुभव किया है .फिर () किसी भी ब्राउज़र में एक परियोजना के लिए काम नहीं कर रहा है, लेकिन मैं .filter () का उपयोग करने में सक्षम था। यह परेशान है कि मुझे इसका सहारा लेना था लेकिन अगर यह काम करता है ….

 $(d).filter('message').each(......); 

मेरे पास एक ही समस्या थी लेकिन मैंने आईई jQuery एक्सएमएल को तय किया था।

नोट: .html () की बजाय .text () का उपयोग करें

 jQuery.ajax({ type: "GET", url: "textxml.php", success: function(msg){ data = parseXml(msg); //alert(data); var final_price = jQuery(data).find("price1").text(); alert(final_price); } }); function parseXml(xml) { if (jQuery.browser.msie) { var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.loadXML(xml); xml = xmlDoc; } return xml; } 

तुम कर सकते हो

 <a> <messages> <message type="HeaderMessage"> This message is put up in the header area. </message> <message type="FooterMessage"> This message is put in the lower left cell. </message> </messages> </a> 

और खोज () का उपयोग करें यह IE8 के लिए और फ़ायरफ़ॉक्स v.3.6.3 के लिए काम करता है

कभी-कभी IE अतिरिक्त नोड्स के रूप में लाइन ब्रेक पढ़ता है। अतिरिक्त सफेद स्थान को टैग तक निकालने का प्रयास करें, या इसे सीडीएटीए के रूप में संरक्षित करने का प्रयास करें।

जब मैं एक XML दस्तावेज़ से डेटा पुनर्प्राप्त कर रहा था, तो मैं उसी समस्या में गया इंटरनेट पर बहुत कुछ करने के बाद, मैं इस वेबसाइट को खोज रहा हूं लेकिन इस मुद्दे पर कोई उचित जवाब नहीं देता। लेकिन एक जवाब ने मुझे समस्या को हल करने में मदद की:

"चूंकि आईई की समस्या इसकी एक्सएमएल पार्सर XML फाइलों पर चुक्स है जो सही" टेक्स्ट / एक्सएमएल "हैडर का इस्तेमाल नहीं करते हैं, तो आप अजाक्स पूरी घटना में थोड़ी सी कोड शामिल कर सकते हैं:"

$। एजेक्स (…) और $ .get (…) कॉल करते समय मैंने IE के साथ दो समस्याओं की पहचान की है:

  1. कॉलम – $ .एजेक्स (…, डेटाटाइप: "एक्सएमएल") और $ .get (xmlDataFilePath, फ़ंक्शन (डी) दोनों कॉल के लिए एक्सएमएल पैरामीटर मान ऊपरी मामले में ('एक्सएमएल' नहीं 'एक्सएमएल') होना चाहिए । ।}, "xml")

  2. जब एजेक्स कॉल सफल होता है, तो कॉलबैक फ़ंक्शन का XML तर्क वास्तव में एक XML DOM ऑब्जेक्ट नहीं है

दूसरा मुद्दा इस तरह सुलझाया जाता है:

 $(document).ready(function() { $.ajax( { type: "GET", url: "messages.xml", dataType: "XML", /* this parameter MUST BE UPPER CASE for it to work in IE */ success: function(xml) { processXmlDoc( createXmlDOMObject ( xml ) ); }, /* success: */ error: function(xhr, textStatus, errorThrown) { alert(textStatus + ' ' + errorThrown); } /* error: */ });/* $.ajax */ function createXmlDOMObject(xmlString) { var xmlDoc = null; if( ! window.DOMParser ) { // the xml string cannot be directly manipulated by browsers // such as Internet Explorer because they rely on an external // DOM parsing framework... // create and load an XML document object through the DOM // ActiveXObject that it can deal with xmlDoc = new ActiveXObject( "Microsoft.XMLDOM" ); xmlDoc.async = false; xmlDoc.loadXML( xmlString ); } else { // the current browser is capable of creating its own DOM parser parser = new DOMParser(); xmlDoc = parser.parseFromString( xmlString, "text/xml" ) ; } return xmlDoc; } function processXmlDoc(xmlDoc) { // write here your XML processing logic for the document object... } }); // $(document).ready 
 $.ajax({ url: 'messages.xml', success: function(data){ $(d).find('message').each(function(){ //But it never gets to here in IE var $msg = $(this); var type = $msg.attr("type"); var message = $msg.text(); switch (type) { case "HeaderMessage": $("#HeaderMessageDiv").html(message); break; case "FooterMessage": $("#footermessagecell").html(message); break; } }); }, dataType: 'xml' }); 

JQuery को यह बताकर देखें कि यह क्या हो रहा है कि यह आपके अनुरोध को संसाधित करने के लिए सही तरीकों का उपयोग करता है।

निम्न सामग्री बदलें

 dataType :"text/xml", 

सेवा मेरे

 dataType :"xml", 

खोज को बदलने की कोई ज़रूरत नहीं है ()

ईमेल संपर्कों को आयात करते समय मेरे पास एक ही समस्या थी मैं आईई के अलावा सभी ब्राउज़रों में संपर्कों और प्रदर्शनों को आयात करने में सक्षम था, क्योंकि। .find() काम नहीं कर रहा था।

इसलिए, मैंने response.contentType "text/xml" करने के लिए "text/xml" असाइन किया है।

यानी response.contentType = "text/xml" और यह काम किया।

पहले यह "text/html"

मुझे एक ही समस्या थी, मैं एक आवेदन विकसित कर रहा हूं जो वेब आधारित है, लेकिन मुझे इसकी आवश्यकता है कि वह एक सीडी के अंदर ऑफ़लाइन भी तैनात करे। मुझे इस पृष्ठ में समाधान मिला है जो आप http://docs.jquery.com/Specifying_the_Data_Type_for_AJAX_Requests से ऊपर एक ही समाधान कर सकते हैं और कोड बहुत सरल है:

  $.ajax({ url: "data.xml", dataType: ($.browser.msie) ? "text" : "xml", success: function(data){ var xml; if (typeof data == "string") { xml = new ActiveXObject("Microsoft.XMLDOM"); xml.async = false; xml.loadXML(data); } else { xml = data; } // write here your XML processing logic for the document object... } }); 

मेरी भी यही समस्या है…

इस के साथ हल:

http://www.w3schools.com/dom/dom_parser.asp

 if (window.DOMParser) { parser=new DOMParser(); xmlDoc=parser.parseFromString(text,"text/xml"); } else // Internet Explorer { xmlDoc=new ActiveXObject("Microsoft.XMLDOM"); xmlDoc.async="false"; xmlDoc.loadXML(text); } 

अपने var को एक्सएमएल ऑब्जेक्ट में बदलने के लिए इसका इस्तेमाल करें …

यह ठीक काम कर रहा है !!! इसे इस्तेमाल करे,

क्रोम / फ़ायरफ़ॉक्स:

 xml.children[0].childNodes[1].innerHTML; 

IE8 + / सफारी:

 xml.childNodes[0].childNodes[1].textContent; 

IE8:

 xml.documentElement.childNodes[1].text; 

यहां नमूना कोड,

 var xml = $.parseXML(XMLDOC); Var xmlNodeValue = ""; if(userAgent.match("msie 8.0")){ xmlNodeValue = xml.children[0].childNodes[1].innerHTML; }else{ // IE8+ xmlNodeValue = xml.childNodes[0].childNodes[1].textContent; } 

यदि XML एक PHP लिपि द्वारा उत्पन्न होता है, तो आप ऐसा कर सकते हैं

 <?php header("Content-type: text/xml"); echo '<myxml></myxml>'; ?> 

तब प्रत्येक ब्राउज़र पर खोज की विधि काम करती है