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

AJc*_*dez 9 jquery

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

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

在控制台中:

202 Accepted 123ms
Error!
Run Code Online (Sandbox Code Playgroud)

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

jQuery版本1.8.3

Esa*_*ija 12

由于202的状态,但由于将响应解析为JSON时出错,因此不会触发错误回调.对于jQuery,2xx并且304是成功的.

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

  • 另一个原因是当请求体为空时,jQuery调用错误回调. (4认同)