13

以下の例を参照successして ajax 呼び出しを行うと、201ステータスが返されます。成功関数内で 200、201 など、これらをより適切に処理するにはどうすればよいですか?

$.ajax({
    type: "POST",
    dataType: "json",
    url: "http://api.domain.com/sms",
    data: {
      // Send value in mobile input field.
      mobile: $("#mobile").val(),
    },
    // On successful AJAX call do the following.
    success: function(data) {
      $('#messageText').text('SMS successfully sent');
    },
    error: function(jqXhr) {
      data = JSON.parse(jqXhr.responseText);
    }
});
4

5 に答える 5

18

statusCodeオブジェクトを使用します。

var handle200 = function(data, textStatus, jqXHR) {
    alert('200'); // success codes have the success signature
};

var handle201 = function(data, textStatus, jqXHR) {
    alert('201'); // success codes have the success signature
    // test it if you are in doubt:
    console.log(data);
    console.log(textStatus);
    console.log(jqXHR);
};

var handle404 = function(jqXHR, textStatus, errorThrown) {
    alert('404'); // failing codes have the error signature
});

var request = $.ajax({
    type: 'POST',
    url: '/myresource/posttarget',
    data: { name: 'john' },
    statusCode: {
        200: handle200,
        201: handle201,
        404: handle404
    }
});
于 2013-03-16T01:19:43.990 に答える
11

これは古い質問ですが、とにかくコメントしたいと思います。

私は同じ問題を抱えていましたが、それを解決した1つのことは、「dataType」を未設定のままにしておくことでした。これを行うと、jQuery はサーバーが返すデータ型を推測しようとし、サーバーがコンテンツなしで 201 を返してもエラーをスローしません。

それが役に立てば幸い。

于 2016-01-14T12:43:48.380 に答える
1

同様の問題がありました。jquery 1.9 のソースを見ると、201 ステータス コードはコンテンツを期待しています。201 でコンテンツが返されない (またはコンテンツ タイプが間違っている) 場合は、fail コールバックが呼び出されます。

于 2014-08-13T06:00:52.553 に答える
0

データは正常に挿入されましたが、jquery は引き続きエラーを返します

ここでの答えは、今のところ使用できる回避策のようです。ただし、クロスドメインを使用している場合、AJAX にはいくつかの問題があります。この SOF スレッドをチェックしてください。

jQuery AJAX から HTTP ステータス/エラー コードを読み取る際の問題

于 2012-09-13T15:49:11.040 に答える