मैं JQuery, PHP और PostgreSQL का उपयोग कर एक साधारण लॉगिन/पंजीकरण कार्यक्षमता कोडिंग कर रहा हूं। निम्न कोड एक PHP फ़ाइल से है जो लॉग इन से संबंधित है। जब लॉगिन/पासवर्ड संयोजन गलत होता है तो यह अपवाद फेंकता है।सर्वर अपवाद फेंकता है, क्लाइंट misinterprets सफलता के रूप में
$username = $_POST['username'];
$password = $_POST['password'];
$query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
$result = pg_query($query) or die('Query failed: ' . pg_last_error());
$numResults = pg_num_rows($result);
if ($numResults == 0) {
throw new Exception("Incorrect combination of username and password.");
//die('Incorrect combination of username and password.');
}
हालांकि, Jquery फ़ाइल में क्लाइंट-साइड पर सफलता फ़ंक्शन निष्पादित किया जाता है भले ही सर्वर अपवाद फेंकता हो।
$.ajax({
type: "POST",
url:"login.php",
data: dataString,
success: function() {
//THIS FUNCTION IS EXECUTED....
$('#errorMsg').html('Login is successful!');
$('#errorMsg').show();
$('#usernameTxtBx').val("");
$('#passwordTxtBx').val("");
},
error:function (xhr, ajaxOptions, thrownError){
window.alert(xhr.status);
window.alert(thrownError);
}
});
जब तुम मर जाते हैं uncomment क्या होता है() कहते हैं? – barfoon
ठीक है, HTTP अनुरोध * सफल * किया। कि PHP परत एक अपवाद फेंक दिया बिंदु के अलावा है। अपाचे भाग गया, PHP से कुछ आउटपुट मिला (जो त्रुटि आउटपुट था, लेकिन ओह ठीक है), और इसे क्लाइंट को सफलतापूर्वक वितरित किया। अगर डाकिया आपको यह बताने के लिए एक पत्र देता है कि हत्या के लिए सजा के खिलाफ आपकी आखिरी अपील को अस्वीकार कर दिया गया था, जो वास्तव में बेकार है, लेकिन पत्र अभी भी ठीक है। –
@ टोमालक: हाँ, लेकिन मामला यहां कुछ अलग है। आपके रूपक के आधार पर, यह ऐसा कुछ होगा। आप एक पत्र भेजते हैं कि क्या आपकी अंतिम अपील के लिए अंतिम अपील सफल हुई या नहीं, और कहें कि एक सकारात्मक संदेश हमेशा एक हरे रंग के लिफाफे में लपेटा जाता है और लाल रंग में एक नकारात्मक संदेश होता है, तो आपको एक संदेश के साथ एक हरा लिफाफा मिल जाएगा सफल नहीं हुआ। HTTP सर्वर स्तर पर त्रुटि हमेशा नहीं होती है। Imho एक uncatched अपवाद हमेशा किसी प्रकार का HTTP त्रुटि कोड उत्पन्न करना चाहिए, क्योंकि यह सब के बाद एक त्रुटि है। – fresskoma