我正在努力理解如何让jQuery.ajax将失败的MySQL UPDATE查询解释为错误。下面是我的代码:
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查询,我总是得到一个字符串作为响应。
因为有一个解决方法(检查成功函数中的字符串),所以这不是一个关键问题。但如果有更正确的方法,我更希望这样做。
发布于 2011-02-27 00:02:25
只有当HTTP状态码指示存在错误时,Ajax调用才会将响应解释为错误。die没有将HTTP状态码设置为500 (至少文档中没有这样说明)。如果你在你的代码中抛出一个异常,而不是仅仅使用die,那么PHP应该返回一个500HTTP状态。
https://stackoverflow.com/questions/5127924
复制相似问题