1. ホーム
  2. jquery

[解決済み] 新しいjQuery AJAXのコードには、成功とエラーの代わりに.done()と.fail()を使用すべきです。

2022-03-03 11:04:54

質問

私はこのようにコーディングしています。

$.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID },
    success: function (data) {
        $('#CityID').html(data);
    },
    error: function (ajaxContext) {
        alert(ajaxContext.responseText)
    }
});

しかし、jQuery を見てみると .ajax() ドキュメント を追加することを提案しているようです。 .done().fail() :

var request = $.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID }
});

request.done(function (data) {
    xxx;
});
request.fail(function (jqXHR, textStatus) {
    xxx;
});

更新情報

このようにコーディングしても同じなのでしょうか、それとも3つに分けることで何か利点があるのでしょうか?

$.ajax({ cache: false,
    url: "/Admin/Contents/GetData",
    data: { accountID: AccountID }
}).done(function (data) {
    xxx;
}).fail(function (jqXHR, textStatus) {
    xxx;
});

解決方法は?

user2246674さんがおっしゃるように successerror をajax関数のパラメータとして使用することは有効です。

先例の答えと矛盾しないように、ドキュメントを読むこと:

非推奨のお知らせ :

jqXHR.success()、jqXHR.error()、および jqXHR.complete() コールバックは、jQuery 1.8 で非推奨になります。最終的な削除に備えるため、代わりにjqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用してください。

コールバック操作機能を使用する場合(例えばメソッドチェイニングを使用する場合)には、以下のように使用します。 .done() , .fail().always() ではなく success() , error()complete() .