2015-10-01 12 views
8

मैं अपने लैपटॉप पर स्थानीय रूप से होस्ट किए गए सर्वर पर एक पोस्ट AJAX अनुरोध करने का प्रयास कर रहा हूं लेकिन मुझे कोई जानकारी वापस नहीं मिल रही है। जब मैं अपनी साइट (स्थानीय होस्ट) पर एक बटन क्लिक करें, मैं सर्वर वापस सही जानकारी गुजर देख सकते हैं लेकिन सामने के छोर पर मैं इस त्रुटि मिलती है:नेटवर्क त्रुटि: 'XMLHttpRequest' पर 'प्रेषण' निष्पादित करने में विफल

error: NetworkError: Failed to execute 'send' on 'XMLHttpRequest': Failed to load ' http://comp-ip '.

var param = JSON.stringify({varA:"varA",varB:"varB"}); 

$.ajax({ 
    type: "POST", 
    url: "http://comp-ip", 
    async: false, 
    data: param, 
    success: function(result, status, xhr){ 
    alert(result + ": " + status); 
    }, 
    error: function(xhr, status, err) { 
    alert(status + ": " + err); 
    } 
}); 

यह एक हर त्रुटि को ट्रिगर किया जा रहा है समय और नहीं 'सफलता'। किसी को भी कोई विचार है कि क्या गलत है?

संपादित करें: मैं AJAX के बिना एक सामान्य पोस्ट अनुरोध भेजने की कोशिश की है और यह मेरे फेंकता है एक 'अनिर्धारित' त्रुटि के रूप में अच्छी तरह से:

$(document).ready(function(){ 
    var param = JSON.stringify({varA:"varA",varB:"varB"}); 
    $("#btn").click(function(event){ 
      $.post( 
       "http://ip", 
       param, 
       function(data) { 
       $('#container').html(data); 
       } 
      ).fail(function(error) { alert(error.responseJSON) }); 
     }); 
}); 

अन्य चीजें मैं कोशिश की है: 1) सफारी के लिए ब्राउज़र बदलने (एक ही बात, सर्वर जानकारी देता है लेकिन साइट को एक त्रुटि मिलती है) 2) async = सत्य को गलत से सेट करना। किसी कारण से जब मैं इसे सत्य पर सेट करता हूं, तो सर्वर बिल्कुल प्रतिक्रिया नहीं देता है। जब यह गलत होता है तो सर्वर प्रतिक्रिया देता है।

उत्तर

6

मुझे कुछ मिनट पहले सचमुच यह समस्या थी। समस्या यह है कि आपको async:falseasync:true पर सेट करने की आवश्यकता है। मुझे यकीन नहीं है कि यह वास्तव में क्यों काम करता है, मुझे लगता है क्योंकि HTML5 एक्सएमएल से नया है।

त्रुटि इस साइट पर थोड़ा अलग है, लेकिन मुझे लगता है कि इसी तरह की है: JavaScript console.log causes error: "Synchronous XMLHttpRequest on the main thread is deprecated..."

अद्यतन

हाय, मैं कुछ नया और बेहतर जानकारी के साथ वापस आ रहा हूँ। क्रॉस-ओरिजिनल बंदरगाहों के साथ-साथ डोमेन/आईपी के साथ होता है, और शायद सबसे सभ्य ब्राउज़रों के साथ होगा। यदि आप जानना चाहते हैं कि क्या हो रहा है, तो आईपी को लोकलहोस्ट में बदलने या इसके विपरीत (यदि आप लोकलहोस्ट का उपयोग कर रहे हैं) को बदलने का प्रयास करें। ध्यान रखें कि यह समस्या तब हो सकती है जब आप विभिन्न बंदरगाहों का उपयोग कर रहे हों। एक त्वरित फिक्स के लिए, सुनिश्चित करें कि बैक-एंड सर्वर जो भी हो, हेडर में आप सही एक्सेस-कंट्रोल हेडर response.addHeader("Access-Control-Allow-Origin", "*"); डाल रहे हैं।

कोड से this question

+1

हाय, आपकी प्रतिक्रिया के लिए धन्यवाद। मैंने गलत से गलत करने के लिए async सेट करने का प्रयास किया लेकिन अजीब रूप से मेरा सर्वर बिल्कुल प्रतिक्रिया नहीं दे रहा है। Async = झूठ के विपरीत जो मेरा सर्वर जानकारी लौटाता है। – Moo33

+0

आपको एक अपरिभाषित त्रुटि मिली है जिसका अर्थ है कि पोस्ट विधि के लिए यूआरएल अमान्य हो सकता है। सर्वर पर जेएस फ़ाइल है? – ytpillai

+0

आह हाँ, संसाधन लोड करने में विफल रहा निश्चित रूप से इसका मतलब है कि आपके पास गलत यूआरएल है। आप किस प्रकार का सर्वर उपयोग कर रहे हैं? – ytpillai

5

ली गई है यह एक क्रॉस उत्पत्ति संसाधन समस्या (CORS) का था। मेरा सर्वर मुझे सही जानकारी दे रहा था लेकिन मेरे ब्राउज़र ने इसे स्वीकार करने से इनकार कर दिया।

yourownvariable.setHeader("Access-Control-Allow-Origin:", "origin url of your site"); 
yourownvariable.setHeader("Access-Control-Allow-Methods", "GET, POST,PUT"); 
+0

खुशी है कि आप इसे ठीक कर सकते हैं – ytpillai

+0

यह त्रुटि हुई [यहां] (http://stackoverflow.com/questions/20433655/no-access-control-allow-origin-header-is-present-on-the-requested-resource- या) भी – ytpillai

-3

आप इस

chrome.exe --allow-file-access-from-files 
की तरह विंडोज पर Chrome के साथ अपने वेब पृष्ठों का परीक्षण कर सकते हैं: इसे ठीक करने के मैं अपने जावा सर्वर (नहीं मेरी साइट) उन्हें प्रतिक्रिया हेडर के रूप में स्थापित करने के बारे में 2 लाइनों को जोड़ने के लिए किया था
संबंधित मुद्दे