12

私はそのようなajax投稿を持っています:

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

応答は 201 ですが、done はそれをキャプチャしていないようで、代わりに失敗します。201は成功したと見なされ、完了したと考えられていました. なぜそれが機能しないのかについてのアイデアはありますか?

注:上記のコードはcoffeescriptであり、質問には実際には影響しませんが、私の構文を説明しています

4

2 に答える 2

8

JSON.parse が Syntax Error をスローしていたため、送信された値は有効な JSON 形式ではありませんでした。投稿者はクロムで構文エラーを確認できませんでしたが、firebug でエラーが表示されました。

これは、Javascript が例外をスローするたびに、応答が 200、201、202 などになる可能性があることを示していますが、構文エラーのため、fail() 関数がトリガーされます。

編集- また、おそらく別の応答を使用する必要があります。多くは 200 - OK を使用しますが、この場合は 202 - ACCEPTED を使用することをお勧めします。

于 2013-02-20T19:59:27.733 に答える
3

ソースを見ると、成功は 200 ~ 300 ~ 304 の間で発生するはずです。別の方法は、statusCode を明示的に呼び出すことです。

$.ajax({
  statusCode: {
    201: function() {
      console.log("HERE");
    }
  }
});
于 2013-02-20T20:00:19.860 に答える