2013-10-16 8 views
11

मुझे निम्न त्रुटि मिल रही है: jquery ajax readystate 0 responsetext status 0 statustext error इसे देने पर: url(http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm), हालांकि यह मेरे स्थानीयहोस्ट पर url(localhost:""/embparse_page) देने पर ठीक काम कर रहा है।jquery AJAX readystate 0 responsetext स्थिति 0 statustext त्रुटि

मैंने Google खोज पर मिले हेडर का उपयोग करने का प्रयास किया है, और मैंने beforeSend:"" भी उपयोग किया है, लेकिन यह अभी भी काम नहीं कर रहा है।

मुझे लगता है कि मुख्य समस्या है: XMLHttpRequest cannot load http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm. Origin "local server" is not allowed by Access-Control-Allow-Origin. लेकिन मुझे यह समझ में नहीं आता है।

क्या कोई मुझे समस्या की व्याख्या कर सकता है, क्योंकि मैं इसके लिए काफी नया हूं।

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns:ng="http://angularjs.org"> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> 
    <meta Access-Control-Allow-Origin="*" /> 
    <title>Page Parsing</title> 
    <script type="text/javascript" src="/js/jquery-1.9.1.min.js"></script> 
    <script> 
    getit=function(){ 
     jQuery.support.cors = true; 
     $.ajax({ 
      type:"GET", 
      url:"http://www.tutorialspoint.com/prototype/prototype_ajax_response.htm", 
      dataType:"html", 
      crossDomain:true, 
      beforeSend: function(xhr) { 
       xhr.overrideMimeType('text/plain;charset=UTF-8'); 
      }, 
      success:function(XMLHttpRequest,jqXHR ,data) { 
       //alert(data.title); 
       var starttitl=data.lastIndexOf('<title>'); 
       var endtitl=data.lastIndexOf('</title>'); 
       var title1=data.substring(starttitl+7,endtitl); 
       alert(title1); 
      }, 
      error:function(errorStatus,xhr) { 
       alert("Error"+JSON.stringify(errorStatus)); 
      } 
     }); 
    } 
    </script> 
</head> 
<body> 
    <div id="siteloader"> 
     <input type="button" onclick="getit()" /> 
    </div> 
</body> 
</html> 
+4

एक टिप: अलर्ट का उपयोग न करें क्योंकि यह डीबग करने का सबसे परेशान तरीका है। 'Console.log' आज़माएं और क्रोम में F12 दबाएं या कंसोल खोलने के लिए फ़ायरफ़ॉक्स में + shift + k को नियंत्रित करें। आपके पास बहुत सारे टूल हैं जो आप ब्रेकपॉइंट्स सेट करने और उनके अनुरोध और प्रतिक्रिया शीर्षकों के साथ अनुरोधों की जांच करने जैसे उपयोग कर सकते हैं। – HMR

+0

सुझाव के लिए धन्यवाद सर –

+0

इस पोस्ट पर शीर्ष मूल्यांकन किया गया जवाब गहराई से है: http://stackoverflow.com/questions/15005500/loading-cross-domain-html-page-with-ajax – Adrian

उत्तर

16

मुझे यह त्रुटि मिल रही थी और मेरे मामले में यह मूल उत्पत्ति नीति के कारण नहीं था। मैं this link से कुछ मदद मिल

मेरे मामला था, मैं एक लिंक बटन थी और मैं e.PreventDefault()

ASPX

<asp:LinkButton ID="lnkSearch" runat="server" CssClass="DockCmdSearch" CommandName="Search" OnClientClick="return VerifySearch(this, event);" /> 

जावास्क्रिप्ट

function VerifySearch(sender, e) {   
    e.preventDefault(); 
    $.ajax({ 
       type: 'POST', 
    ............. 
    } 
    return false; 
} 
का उपयोग नहीं किया गया था
+0

इस पोस्ट पर शीर्ष मूल्यांकन किया गया जवाब गहराई में है: http: // stackoverflow.com/questions/15005500/loading-cross-domain-html-page-with-ajax – Adrian

0

समान मूल नीति। ब्राउज़र जब आप

http://site1.com 

पर हैं से कनेक्ट करने की अनुमति नहीं है:

site2.com 
sub.site1.com 
site1:99.com 
https://site1.com (not sure about this one) 

यह इसलिए है site1 site2 से सामग्री चोरी नहीं कर सकते हैं और यह site1 की सामग्री है नाटक। इसके आस-पास के तरीके JSONP (Google मानचित्र का उपयोग करते हैं जो मुझे लगता है) और site2 को कोर हेडर प्रदान करते हैं लेकिन कोर 1 jQuery में समर्थित नहीं हैं। * (शायद 2. * में नहीं) क्योंकि आईई को इसे लागू करने में कुछ समस्याएं हैं। दोनों परिस्थितियों में आपको अपनी साइट के साथ सहयोग करने के लिए साइट 2 की आवश्यकता है ताकि आपकी साइट इसकी सामग्री प्रदर्शित कर सके।

यदि आप केवल इसका उपयोग करते हैं तो आप फ़ायरफ़ॉक्स का उपयोग कर सकते हैं और फोर्सकोर प्लगइन इंस्टॉल कर सकते हैं। सक्रिय करने के लिए आप दृश्य => टूलबार => बार पर जोड़ सकते हैं और स्क्रीन के दाहिने तल में "कोर" टेक्स्ट पर क्लिक कर सकते हैं।

+0

लेकिन हम यह कर सकते हैं curl() का उपयोग कर php में अवधारणा (साइट 1 से साइट 2 की सामग्री तक पहुंच सकते हैं)। तो अगर जावास्क्रिप्ट में कुछ ऐसा है तो कृपया मुझे बताएं –

+0

हां, आप अपने सर्वर के माध्यम से प्रॉक्सी की आवश्यकता कर सकते हैं लेकिन आप जिस साइट से अपनी सामग्री प्राप्त कर रहे हैं उसकी आईपी संपत्ति का उल्लंघन कर रहे हैं। कुछ बड़ी सुपरमार्केट साइट ने यह किया और जब दूसरी साइट ने इसका पता लगाया तो उन्होंने सुपरमार्केट साइट बोगस जानकारी को कट ऑफ हेड और पसंद की तस्वीरों के साथ खिलाया। यह एक चंचल और प्रभावी तरीका था, यह आपके दरवाजे पर दस्तक देने वाला एक वकील भी हो सकता है – HMR

+0

@DhirenderTyagi php के माध्यम से प्रॉक्सी करना एक विकल्प है यदि साइट 2 नहीं चाहता कि आपकी साइट इसकी सामग्री प्रदर्शित करे या चाहें लेकिन पर्याप्त परवाह नहीं करे एक JSON एपीआई बनाएँ। यह जावास्क्रिप्ट में नहीं किया जा सकता है क्योंकि जावास्क्रिप्ट ब्राउज़र में चलता है और यह वह ब्राउज़र है जो समान मूल नीति को लागू करता है ताकि साइटों को उनकी सामग्री को लेने और अन्य साइटों पर प्रस्तुत करने से बचा जा सके। कम से कम प्रॉक्सी विधि साइट 2 के साथ एक ही आईपी से आने वाले बहुत से अनुरोध का पता लगाया जा सकता है। – HMR

-3

मैंके लिए txt/XML फ़ाइल पढ़ने का परीक्षण कर रहा थाडेटा और एक त्रुटि मिली ...मूल्यों पढ़ें: Status[0] & readyState[0] और StatusText[error]; यह लेकिन क्रोम पर नहीं इंटरनेट एक्सप्लोरर पर सफलतापूर्वक काम कर रहा था क्योंकि डोमेन एक ही

यह यह क्या तय है

सेल्सियस तक

जाओ होने की जरूरत: \ WINDOWS \ system32 \ drivers \ etc \ मेजबान

अपने स्थानीय होस्ट एप्लिकेशन के खिलाफ कोई नाम दें:

127.0.0.1 SampleSiteName.com 

अब http://SampleSiteName.com/YourAjaxFileName.htm के रूप में क्रोम में कोड खोलने (अगर यह खुलता है, इसका मतलब है कि आपने एक होस्ट नाम सही ढंग से दर्ज किया है) अपनी HTML फ़ाइल पर जाएं और उस फ़ाइल का एक सापेक्ष पता दें जिसे आप पढ़ने की कोशिश कर रहे हैं (यदि FileToBeRead.txtYourAjaxFileName.htm के समान फ़ोल्डर में है, तो बस यूआरएल दर्ज करें: " /FileToBeRead.txt ")

अब आपका कोड क्रोम पर भी काम करेगा।

+0

मुझे नहीं लगता कि यह दूरस्थ साइट से सामग्री कैसे प्राप्त कर सकता है। आपका AJAX अनुरोध केवल आपकी स्थानीय मशीन पर लूप होगा क्योंकि यह निकाले गए डोमेन नाम को 127.0.0.1 को हल करेगा। – Adrian

+1

स्टैक ओवरफ्लो पर, अपनी पोस्ट में एक नई लाइन बनाने के लिए, आपको या तो '
' का उपयोग करना होगा या 2 नई लाइनें बनाना होगा। मेरा संपादन देखें। –

+0

जो लोग क्षमा चाहते हैं कि यह मेरे लिए देर हो चुकी है – Adrian

0

मुझे अपने अजाक्स कॉल से यह त्रुटि मिल रही थी, और यह मेरे लिए तय किया गया था कि वह 'वापसी झूठी' डाल रहा था।

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