我很努力地理解如何讓jQuery.ajax將錯誤的MySQL UPDATE查詢解釋爲錯誤。這裏是我的代碼:獲取jQuery.ajax來將響應解釋爲錯誤
的jQuery:
$.ajax({
type:'POST',
url:'/ajax/registration.php',
data:{formData: formData},
success:function(data){eformDef.forms.registration.success(data);},
error:function(data){eformDef.forms.registration.success(data);}
});
PHP
$data = $_POST['formData'];
$firstName = mysql_real_escape_string($data['first name']);
$lastName = mysql_real_escape_string($data['last name']);
$email = mysql_real_escape_string($data['email address']);
$password = mysql_real_escape_string($data['password']);
mysql_query("INSERT INTO users (first_name, last_name, email, password) VALUES ('$firstName', '$lastName', '$email', '$password')") or die(mysql_error());
不管是什麼 - 就算我做的mysql_query語法無效 - Ajax調用總是將響應解釋爲成功。我認爲這是因爲mysql_error()被作爲響應發送回來,ajax調用將它讀作字符串,並且顯然認爲這是成功的。當然,我可以通過檢查$ .ajax成功函數中的響應字符串來處理這個問題,但這看起來有點不合邏輯。在我可以使用$ .ajax dataType選項測試數據類型的情況下,這不是問題。但有了像上面那樣的UPDATE查詢,我總是得到一個字符串作爲響應。
由於存在解決方法(檢查成功函數中的字符串),所以這不是關鍵問題。但是,如果有更正確的方式做到這一點,我更喜歡這一點。
謝謝,這個作品很棒。關於這個例外......但這似乎隻影響500錯誤。我可以只傳遞一個不同的錯誤號碼,如404,以獲得相同的功能,而不必擔心您鏈接的異常? – maxedison 2011-02-26 18:19:02
@maxedison如果你明確地拋出500,那應該沒問題。你也可以拋出一些其他的錯誤代碼,但是,沒有什麼錯。 http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html – 2011-02-26 18:41:20
在這種情況下,我想我不明白你指出的「例外」有什麼相關性。我以爲你指出,拋出500錯誤總是會起作用,除了這種例外。沒有? – maxedison 2011-02-26 19:02:20