我很努力地理解如何让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