Jquery ajax完成回调没有响应201

时间:2013-02-20 19:49:30

标签: jquery coffeescript jquery-deferred

我有一个ajax帖子:

$.post("/api/v1/payment_methods/create_credit_card", values)
.done (response) ->
  console.log("GOOD JOB")
.fail (response) ->
  console.log("Adas")

响应是201,但是,完成似乎没有捕获它,而是它将失败。我认为201会被认为是成功的,并且会被完成捕获。为什么它不起作用的任何想法?

注意:上面的代码是在coffeescript中,它并没有真正影响问题,但解释了我的语法

2 个答案:

答案 0 :(得分:8)

所以我们弄清楚出了什么问题,JSON.parse抛出了一个语法错误 - 因此发送的值不是有效的JSON格式。海报无法在chrome中看到Syntax错误,但是firebug显示错误。

这表明只要Javascript抛出异常,响应可能仍然是200,201,202等 - 但由于语法错误,会触发fail()函数。

编辑 - 你也应该使用不同的响应,许多人使用200 - OK,但我建议在这种情况下使用202 - ACCEPTED。

答案 1 :(得分:3)

查看源代码,成功应触发200 - 300到304之间的任何内容。另一种方法是明确调出statusCode:

$.ajax({
  statusCode: {
    201: function() {
      console.log("HERE");
    }
  }
});