2013-05-10 10 views
28

मुझे पता है कि सर्वर डेटा या त्रुटि कैसे प्राप्त करें। बहुत तरीके हैं। उदाहरण के लिए: मैं अपने त्रुटि समारोह है और मैं क्या मैं वहाँ की जरूरत हैअनचाहे jQuery को रोकें AJAX त्रुटि

result in chrome developer console

:

$.ajax({ 
    type: "get", 
    url: "/widgets/", 
    success: function (data, text) { 
     console.log('this is a data'); 
    }, 
    error: function (request, status, error) { 
     console.log('this is an error'); 
    } 
}); 

कृपया इस छवि देखते हैं। मैं पहली पंक्ति में त्रुटि को कैसे रोक सकता हूं। मैंने 4xx और 5xx त्रुटियों का परीक्षण किया है लेकिन कोई अंतर नहीं है। मुझे पता है कि डेवलपर कंसोल छुपाए जाने पर अंतिम उपयोगकर्ता को यह त्रुटि दिखाई नहीं देती है।

मुझे एपीआई डिज़ाइन करने की आवश्यकता है। मुझे पता है कि मैं एक अतिरिक्त तर्क के साथ सर्वर से 200 प्रतिक्रिया भेज सकता हूं जो दिखाता है कि यह एक त्रुटि या सफलता परिणाम है।

लेकिन अगर मैं 4xx या 5xx प्रतिक्रिया भेज सकता हूं तो अतिरिक्त तर्क की आवश्यकता नहीं है। इस तरह मेरे लिए कुछ अतिरिक्त लाभ है। उदाहरण के लिए मैं अतिरिक्त तर्कों के बारे में चिंता किए बिना अपने क्लाइंट साइड मॉडल में सफलता परिणाम लागू कर सकता हूं।

आप

+0

jQuery-1.9.1.js: 8526 '// यह एक अपवाद है जो उठा सकती है actually' ' // jQuery.ajax (ताकि कोई ट्राई/यहाँ पकड़) '' xhr.send में संभाला ((s.hasContent && s.data) || null); ' – iman

+4

'try/catch' में' xhr.send' को लपेटना ** नहीं ** ** डेवलपर कंसोल में त्रुटि को दिखाने से रोकता है। ध्यान दें कि ये * जेएस त्रुटियों/अपवाद नहीं हैं, लेकिन * अनुरोध * से संबंधित हैं जो ब्राउजर भेजता है, इसलिए जेएस त्रुटि पकड़ने की कोशिश नहीं की जाएगी। – gkalpak

+0

इस उत्तर का प्रयास करें: http://stackoverflow.com/questions/7436195/disabling-some-jquery-global-ajax-event-handlers-for-a-request – JVE999

उत्तर

12

AFAIK आप लाल थिंगी, चले जाओ जब लौटने त्रुटि स्थिति-कोड (4xx, 5xx) नहीं कर सकते हैं धन्यवाद। ब्राउज़र का उपयोग यह इंगित करने के लिए किया जाता है कि कुछ ऐसा अपेक्षित नहीं हो सकता है। फिर भी ये केवल सजावट हैं, क्योंकि 4xx और 5xx स्टेटस कोड पूरी तरह से मान्य हैं, इसलिए मुझे उनको खत्म करने के लिए कोई कारण नहीं दिख रहा है।

जैसा कि आपने स्वयं कहा था, आपका दूसरा विकल्प "सर्वर से 200 प्रतिक्रियाओं को एक अतिरिक्त तर्क के साथ भेज देगा जो दिखाता है कि यह एक त्रुटि या सफलता परिणाम" है।

मैं निश्चित रूप से 4xx और 5xx कोड का उपयोग करने की सलाह देता हूं (यही वह है जिसे वे डिजाइन किए गए हैं) और डेवलपर कंसोल (उर्फ लाल चीज़ों) में ब्राउज़र के हेड-अप चेतावनियों के बारे में चिंता करना बंद करें।

this और this प्रश्न भी देखें जो अन्य प्रकार के संसाधनों (छवियों, फाइलों आदि) लाने के दौरान समान त्रुटियों का संदर्भ देते हैं। आप जो त्रुटियां देखते हैं वे वास्तव में एक ही प्रकृति के हैं।

+2

रिपोर्टिंग से बचने के लिए एक अच्छा विकल्प होगा इन त्रुटियों में से: परीक्षण (विशेष रूप से वेब ऐप्स का हेडलेस परीक्षण)। उदाहरण के लिए, आप असफल AJAX अनुरोध के लिए एक परीक्षण (मोचा-फ़ैंटनजेएस के साथ कहें) लिखते हैं। इन सभी त्रुटियों को परीक्षण सारांश में दिखाना मुश्किल है। – emepyc

+0

मेरे पास यह देखने के लिए एक चेक है कि कोई पृष्ठ मौजूद है या नहीं, और लाल त्रुटि यह कुछ गलत होने की तरह दिखती है, इसलिए इसे दबा देना अच्छा होगा। – JVE999

+1

@ जेवी 99 99: मेरा जवाब है। "लाल चीज-भौतिक" मत बनो! 4xx और 5xx मान्य कोड हैं और आप कुछ भी नहीं कर सकते हैं कि ब्राउज़र उन्हें लॉग इन करने का विकल्प कैसे चुनता है (न ही आपको इसके बारे में चिंता करनी चाहिए)।यदि आप कंसोल खोलने वाले उपयोगकर्ता के बारे में चिंतित हैं और लाल चीजों के कारण अपने ऐप को गलत तरीके से न्याय करते हैं, तो शायद आप इसे समझाने के लिए कुछ संदेश लॉग कर सकते हैं और उन्हें अपेक्षित व्यवहार के बारे में बता सकते हैं। – gkalpak

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