我有一个ajax帖子:
$.post("/api/v1/payment_methods/create_credit_card", values)
.done (response) ->
console.log("GOOD JOB")
.fail (response) ->
console.log("Adas")
响应是201,但是,完成似乎没有捕获它,而是它将失败。我认为201会被认为是成功的,并且会被完成捕获。为什么它不起作用的任何想法?
注意:上面的代码是在coffeescript中,它并没有真正影响问题,但解释了我的语法
答案 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");
}
}
});