2013-08-24 6 views
7

मैं सामान्य रूप से जावास्क्रिप्ट और वेब विकास में अनुभवहीन हूं। जिस परियोजना पर मैं काम कर रहा हूं वह एक सामान्य कंपनी प्रशिक्षण कार्यक्रम का हिस्सा है। हमें प्राथमिक क्रोम ब्राउज़र के रूप में Google क्रोम का उपयोग करने का निर्देश दिया गया है।जावास्क्रिप्ट XMLHttpRequest "NetworkError"

अनिवार्य रूप से, मैं एक ऐसा एप्लीकेशन लिख रहा हूं जो कंपनी इंट्रानेट के बाहर के ग्राहकों पर चलेगा। कनेक्शन आंतरिक सेवाओं पर सर्वर पर हमारे एकल हस्ताक्षर से गुज़रेंगे। सेवा पर एकल साइन सर्वर सर्वर के पक्ष में अधिकतर पारदर्शी है - यह आंतरिक सेवाओं के अनुरोधों को रोकता है और यदि आवश्यक हो तो प्रमाण-पत्रों के लिए संकेत देता है। जो मैं बता सकता हूं, उससे भेजे गए प्रत्येक अनुरोध के दौरान सत्र कुकी बदल जाती है।

मैंने HTTP GET और POST कनेक्शन का उपयोग कर सेवाओं के लिए कनेक्शन स्थापित किए हैं। हालांकि, एक ऐसी सेवा है जिसके लिए HTTP PUT अनुरोध की आवश्यकता है। यह जहां मुसीबत में आ रहा है है

जब स्क्रिप्ट चलाया जाता है, क्रोम JavaScript कंसोल निम्न त्रुटि देता है:।

Uncaught NetworkError: A network error occurred. 

त्रुटि इतना अस्पष्ट है। जब मैं क्रोम डेवलपर टैब में नेटवर्क टैब देखता हूं, तो यह अनुरोध दिखाता है, लेकिन इसमें कोई प्रतिक्रिया डेटा नहीं है।

जिज्ञासा के लिए, मैंने अनुरोध पर राइट क्लिक किया और इसे एक कर्ल अनुरोध के रूप में कॉपी किया। मैंने सत्र ध्वज को -b ध्वज के माध्यम से अनुरोध में जोड़ा। सर्वर पर एक कुकी कुकी स्क्रिप्ट के संदर्भ के साथ, curl एक HTTP 302 देता है। एक पुट अनुरोध होने के नाते, क्या कोई रीडायरेक्ट अनुरोध विफल होने का कारण नहीं है? लेकिन मैं सकारात्मक नहीं हूं यह क्रोम/जेएस में हो रहा है।

क्या कोई तरीका है कि मैं त्रुटि के बारे में अधिक जानकारी प्राप्त कर सकता हूं?

मैं उस टीम में 100% आत्मविश्वास नहीं हूं जिसने हमारे लिए आंतरिक सेवाओं का उपयोग किया है, इसलिए एक पुट अनुरोध का उपयोग वास्तव में असंभव हो सकता है ... सेवाएं अभी भी विकास में हैं।

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

उत्तर

10

मैंने एक ही समस्या में भाग लिया है। ऐसा लगता है कि केवल प्रतिक्रिया प्रतिक्रियाओं पर ही होता है। यदि आप अपना एसिंक ध्वज गलत पर सेट करते हैं और कॉलबैक फ़ंक्शन का उपयोग करते हैं तो त्रुटि दूर हो जाती है। उदाहरण के लिए:

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
    // do stuff here 
    } 
} 
:

xmlhttp.open("GET","http://google.com", false); 

तो फिर तुम प्रतिक्रिया के लिए सुनने के लिए इस तरह एक समारोह की आवश्यकता होगी