2010-02-06 10 views
12

मेरे दस्तावेज़ में मेरे पास यह स्क्रिप्ट है:

$.ajax({ type:"POST",url:"ajax.php",data:data, 
    success: function() { 
     //onsuccess 
    }, 
    error: function() { 
     //onerror 
    } 
}); 

मैं ajax.php दस्तावेज़ में जानबूझ कर एक त्रुटि कैसे फेंक सकता हूं? क्या यह केवल 400 HTTP स्टेटस कोड या कुछ फेंकने के लिए पर्याप्त है? (और यदि हां, तो 400 सही है?) Xzx52

मैं क्यों पूछ रहा हूं कि मैं सर्वर पर एक फॉर्म जमा करने के लिए इसका उपयोग करना चाहता हूं, और यदि कोई फ़ील्ड ठीक से भर नहीं गया है तो मैं सतर्क रहना चाहता हूं $.ajax में त्रुटि पैरामीटर के माध्यम से उपयोगकर्ता। मुझे पता है कि मैं इसे पहले स्थान पर जावास्क्रिप्ट का उपयोग करके कर सकता हूं, लेकिन मुझे आशा है कि मैं इसे इस तरह से कर सकता हूं (इसलिए मुझे सत्यापन को दो बार लिखना नहीं है)। लेकिन निश्चित रूप से ऐसा करने से, मैं अलग-अलग क्षेत्रों को दूसरे से अलग नहीं कर सकता।

जो मैं इसे उपयोग करना चाहता हूं उसके आधार पर, क्या मैं किसी भी तरह से "कस्टम त्रुटि" फेंक सकता हूं, इसलिए यदि फ़ील्ड name ठीक से भर नहीं गया है, तो यह फ़ील्ड का नाम देता है (यानी name)। क्या यह ऐसा कुछ करने के लिए पर्याप्त है:

ajax.php में:

if (isFilledOutProperly($name) == false) { 
    echo "name"; 
} 
else { 
    echo "success"; 
} 

और:

success: function(data) { 
    if (data == 'name') { 
     //error 
    } 
      else { 
     //success 
    } 
}, 

मैं यहां गलत ट्रैक पर हो सकता हूं, लेकिन अगर किसी के पास बेहतर सुझाव है मैं यह कैसे कर सकता हूं, कृपया मुझे बताएं। धन्यवाद!

उत्तर

11

error$.ajax() कॉल का खंड वास्तव में उस परिस्थिति के लिए नहीं है जिसका आप उल्लेख कर रहे हैं। error, HTTP त्रुटियों के मामलों को कवर करता है। प्रमाणीकरण विफलताओं इस मामले में वास्तव में त्रुटियां नहीं हैं। आप सर्वर से लौटाए गए उचित डेटा के साथ success कॉलबैक में उन लोगों को इंगित करने से बेहतर हैं।

आप documentation को देखें, तो: यदि अनुरोध विफल रहता है

error(XMLHttpRequest, textStatus, errorThrown)Function 

एक समारोह के नाम से जाना। फ़ंक्शन तीन तर्क पारित किया गया है: XMLHttpRequest ऑब्जेक्ट, त्रुटि हुई त्रुटि का वर्णन करने वाली स्ट्रिंग और एक वैकल्पिक अपवाद ऑब्जेक्ट, यदि कोई हुआ तो। दूसरे तर्क (शून्य के अलावा) के संभावित मान "टाइमआउट", "त्रुटि", "नोटमोडाइफाइड" और "पार्सररर" हैं। यह एक Ajax Event है।

नोट: त्रुटि की स्थिति यह बारे में बात करती पार्स त्रुटि, समय समाप्ति, त्रुटियों (HTTP) और नहीं संशोधित (जो एक और HTTP प्रतिक्रिया है) कर रहे हैं।

तकनीकी रूप से आपका अनुरोध सफल होता है लेकिन सत्यापन विफल रहता है, जो प्रति त्रुटि नहीं है।

+3

आरईएसटी सिद्धांत के अनुसार, HTTP 200 के साथ एक POST अनुरोध का जवाब देने का अर्थ है कि संसाधन सफलतापूर्वक बनाया गया है। आप एक HTTP 400 के साथ प्रतिक्रिया दे सकते हैं और टेक्स्ट/एचटीएमएल/जेसन/एक्सएमएल प्रारूप में त्रुटि के बारे में विस्तृत जानकारी भी प्रदान कर सकते हैं। – Leventix

+0

मुझे पता है, लेकिन जैसा कि मैं पूछ रहा था: मैं जानबूझकर '$" के "त्रुटि" भाग को फेंक सकता हूं।AJAX() 'एक HTML त्रुटि को मजबूर कर? – Eikern

+0

हां, यदि आप HTTP 2xx के अलावा अन्य के साथ प्रतिक्रिया देते हैं, तो "त्रुटि" भाग कहा जाएगा। – Leventix

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

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