जवाबों:
एक और मामला:
0
यदि आपने AJAX कॉल भेजा है तो स्थिति कोड प्राप्त करना संभव हो सकता है और AJAX प्रतिक्रिया प्राप्त करने से पहले ब्राउज़र का एक रिफ्रेश ट्रिगर किया गया था । AJAX कॉल रद्द कर दी जाएगी और आपको यह दर्जा मिल जाएगा।
<form onsubmit="return false;">
e.preventDefault();
मेरे अनुभव में, आप 0 की स्थिति देखेंगे जब:
उपयोग करते समय एक ही समस्या <button onclick="">submit</button>
। फिर उपयोग करके हल किया<input type="button" onclick="">
स्थिति कोड 0 का मतलब है कि अनुरोधित यूआरएल उपलब्ध नहीं है। परिवर्तित करने से // कुछ / कुछ: http करने के लिए https: // कुछ / कुछ मेरे लिए काम किया। IE स्थिति कोड 0 है, जब अन्य ब्राउज़र न "त्रुटि से इनकार" अनुमति से इनकार कर दिया।
इस लेख ने मेरी मदद की। मैं AJAX के माध्यम से फॉर्म जमा कर रहा था और return false
(मेरे ajax अनुरोध के बाद) उपयोग करना भूल गया, जिसके कारण क्लासिक फॉर्म सबमिट हो गया लेकिन अजीब तरह से यह पूरा नहीं हुआ।
<form onsubmit="return false;">
चाल चली।
क्योंकि यह दिखाता है कि जब आप ajax स्टेटस को गूगल करते हैं तो 0 मैं कुछ टिप छोड़ना चाहता था, जिसमें मुझे घंटों का समय लगता था ... मैं ajax का उपयोग PHP सेवा को कॉल करने के लिए कर रहा था, जो कि Codeigniter के लिए Phil के REST_Controller होने के लिए हुआ था (यह सुनिश्चित नहीं है कि क्या यह है इसके साथ कुछ नहीं करना है या नहीं) और स्टेटस 0 प्राप्त करता रहा, 0 को रीडिस्ट्रेट किया और यह मुझे पागल कर रहा था। मैं इसे डिबग कर रहा था और देखा कि जब मैं गूंजूंगा और संदेश से बाहर निकलने के बजाय मैं एक सफलता प्राप्त करूंगा। अंत में मैंने डिबगिंग बंद कर दी और कोशिश की और यह काम कर गया। लगता है कि PHP के साथ xDebug डिबगर किसी तरह प्रतिक्रिया को संशोधित कर रहा था। यदि आपका एक PHP डिबगर का उपयोग करके यह देखने के लिए कि यह मदद करता है, तो इसे बंद करने का प्रयास करें।
मुझे एक और मामला मिला जहां jquery आपको स्टेटस कोड 0 देता है - अगर किसी कारण से XMLHttpRequest परिभाषित नहीं होता है, तो आपको यह त्रुटि मिलेगी।
जाहिर है कि यह आम तौर पर वेब पर नहीं होगा, लेकिन एक रात के फ़ायरफ़ॉक्स बिल्ड में एक बग के कारण मुझे ऐड-ऑन में फसल करना पड़ा। :)
jQuery.ajax()
एक्सएचआर ऑब्जेक्ट के साथ समस्या थी । अनुरोध AJAX कॉल पर भी नहीं बनाया गया था, अभी भी f.open एक फ़ंक्शन और स्थिति कोड नहीं है। 0. इसके कारण: मैं $.ajaxSettings.xhr
ऑब्जेक्ट से लौट रहा था $.ajaxSetup({xhr})
, new window.XMLHttpRequest();
बजाय समस्या को हल किए
मुझे भी यही समस्या थी, और यह ब्राउज़र द्वारा XSS (क्रॉस साइट स्क्रिप्टिंग) ब्लॉक से संबंधित था। मैं एक सर्वर का उपयोग कर इसे बनाने में कामयाब रहा।
"एक्सीडेंटल" फॉर्म सबमिशन वास्तव में मुझे जो समस्या थी। मैंने सिर्फ FORM टैग को पूरी तरह से हटा दिया है और यह समस्या को ठीक करने के लिए लगता है। आप सबको धन्यवाद!
हमारे पास इसी तरह की समस्या थी - jquery ajax कॉल पर स्टेटस कोड 0 - और इसका निदान करने में हमें पूरा दिन लग गया। चूंकि किसी ने भी इस कारण का उल्लेख नहीं किया था, मैंने सोचा कि मैं साझा करूँगा।
हमारे मामले में समस्या HTTP सर्वर क्रैश की थी। PHP में कुछ बग अपाचे उड़ा रहा था, इसलिए ग्राहक के अंत में यह इस तरह दिखता था:
mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com
Connection closed by foreign host.
mirek@toccata:~$
जहाँ परीक्षण। php में दुर्घटनाग्रस्त कोड था। सर्वर से कोई डेटा नहीं लौटाया गया (हेडर भी नहीं) => स्थिति के साथ ajax कॉल निरस्त की गई।
मेरे मामले में, यह मेरे django सर्वर के तहत चलने के कारण हुआ, http://127.0.0.1:8000/
लेकिन ajax कॉल भेजने के कारण http://localhost:8000/
। यद्यपि आप उनसे एक ही पते पर मैप करने की अपेक्षा करेंगे, फिर भी वे यह सुनिश्चित नहीं करते कि आप अपने अनुरोध को लोकलहोस्ट को नहीं भेज रहे हैं।
हमारे मामले में, पृष्ठ लिंक को https से http में बदल दिया गया था । भले ही उपयोगकर्ताओं को लॉग इन किया गया था, लेकिन उन्हें AJAX के साथ लोड होने से रोका गया था।
मेरे लिए, समस्या होस्टिंग कंपनी (गोडैडी) द्वारा POST परिचालनों का इलाज करने के कारण हुई, जिसमें कुछ प्रकार के सुरक्षा खतरे के रूप में पर्याप्त प्रतिक्रिया डेटा (दसियों किलोबाइट से अधिक) था। यदि इनमें से 6 से अधिक एक मिनट में होते हैं, तो होस्ट ने PHP कोड को निष्पादित करने से इनकार कर दिया जो अगले मिनट के दौरान POST अनुरोध का जवाब देता है। मुझे पूरी तरह से यकीन नहीं है कि मेजबान ने इसके बजाय क्या किया, लेकिन मैंने देखा, tcpdump के साथ, ब्राउज़र से एक POST अनुरोध के जवाब के रूप में आने वाला एक टीसीपी रीसेट पैकेट। इसके कारण http स्थिति कोड jqXHR ऑब्जेक्ट 0 में वापस आ गया।
POST से GET तक के कार्यों को बदलने से समस्या ठीक हो गई। यह स्पष्ट नहीं है कि गोडैडी ने यह सीमा क्यों लगाई, लेकिन कोड को बदलना मेजबान को बदलने की तुलना में आसान था।
मुझे लगता है कि मुझे पता है कि इस त्रुटि का कारण क्या हो सकता है।
Google chrome में google chrome extension के लिए ddos हमलों को रोकने के लिए एक अंतर्निहित सुविधा है।
जब अजाक्स लगातार 500+ स्थिति की त्रुटियों को वापस करता है, तो यह अनुरोधों को समाप्त करना शुरू कर देता है।
इसलिए निम्नलिखित अनुरोधों पर स्थिति 0 प्राप्त करना संभव है।
वर्णित समस्या के लिए सबसे विनम्र कारण के लिए पुरस्कार जीतने की कोशिश में।
कॉल करना भूल गया
xmlhttp.send(); //yes, you need this pivotal line!
हां, मुझे अभी भी 'ओपन' कॉल से शून्य का स्टेटस रिटर्न मिल रहा था।
मेरे मामले में, मुझे यह मिल रहा था लेकिन केवल सफारी मोबाइल पर। समस्या यह है कि मैं रिश्तेदार के बजाय पूर्ण URL ( http://example.com/whatever.php ) का उपयोग कर रहा था (जो भी हो)। हालांकि इसका कोई मतलब नहीं है, यह एक XSS मुद्दा नहीं हो सकता क्योंकि मेरी साइट http://example.com पर होस्ट की गई है । मुझे लगता है कि सफारी http भाग को देखता है और स्वचालित रूप से इसे बाकी URL का निरीक्षण किए बिना असुरक्षित अनुरोध के रूप में चिह्नित करता है।
मेरे समस्या निवारण में, मुझे यह AJAX xmlhttpRequest.status == 0 मिला, जिसका अर्थ यह हो सकता है कि क्लाइंट कॉल अभी तक सर्वर तक नहीं पहुंची थी, लेकिन क्लाइंट की ओर से समस्या के कारण विफल रही। यदि प्रतिक्रिया सर्वर से थी, तो स्थिति उन 1xx / 2xx / 3xx / 4xx / 5xx HTTP रिस्पॉन्स कोड में से एक होनी चाहिए। इसके बाद, समस्या निवारण CLIENT मुद्दे पर ध्यान केंद्रित करेगा, और ऊपर @LLdondon द्वारा वर्णित इंटरनेट नेटवर्क कनेक्शन नीचे या उनमें से एक हो सकता है।
अनुरोध करते समय ब्राउज़र कंसोल का निरीक्षण करें, यदि आप "समान उत्पत्ति नीति को http ajax में दूरस्थ संसाधन को पढ़ने से रोकते हैं ..... कारण: कॉर्स हैडर का अभिगम-नियंत्रण-अनुमति-मूल 'गायब है" तो आपको करने की आवश्यकता है प्रतिक्रिया हैडर में "एक्सेस-कंट्रोल-अलाउंस-ओरिजिन" जोड़ें। exa: java में आप इसे response.setHeader ("Access-Control-Allow-Origin", "*") की तरह सेट कर सकते हैं, जहाँ प्रतिक्रिया HttpServletResponse है।