10

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

$.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 for wrong password 和 202 Accepted for correct password 将是适当的响应代码,但老实说,我对 HTTP 知之甚少。

jQuery 版本 1.8.3

4

2 回答 2

14

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

如果响应正文是Invalid Password无效的 json 并在尝试解析它时触发 jQuery 错误。正确的 JSON 字符串在其周围有引号,例如"Invalid Password". 您应该使用 JSON 序列化程序对响应进行 JSON 编码,而不是手动构造 json,您可以看到这很容易出错。

于 2013-03-14T17:12:13.353 回答
0

没关系,让它工作

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

而不是successerror回调。仍然有点令人费解的 202 会触发错误。

于 2013-03-14T16:57:01.863 回答