jQuery AJAX调用错误回调202响应 - 不应该是成功回调吗?

时间:2013-03-14 16:55:24

标签: jquery

这一切都在标题中。我正在尝试在执行破坏性操作之前检查用户的密码:

$.ajax({
  type: 'POST',
  url: '/path/to/post.json',
  data: { password: '**********' },
  success: function() { console.log("Success!"); },
  error: function() { console.log("Error!"); }
});

在控制台中:

202 Accepted 123ms
Error!

我认为403 Forbidden用于错误的密码和202接受正确的密码将是适当的响应代码,但我不太了解HTTP说实话。

jQuery版本1.8.3

2 个答案:

答案 0 :(得分:11)

由于202的状态,但由于将响应解析为JSON时出错,因此未触发错误回调。对于jQuery,2xx304是成功的。

如果响应正文为Invalid Password,则json无效,并在尝试解析时触发jQuery错误。一个合适的JSON字符串有引号,如"Invalid Password"。您应该使用JSON序列化程序对JSON编码您的响应,而不是手动构建json,您可以看到它容易出错。

答案 1 :(得分:0)

没关系,让它与

一起工作
statusCode: {
  202: function() { console.log("Success!"); },
  403: function() { console.log("Error!'); }
}

而不是successerror回调。尽管如此,仍然有点莫名其妙的触发错误。