web-dev-qa-db-ja.com

jQuery AJAXで404ステータスをキャプチャする

私はこのコードを持っています:

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

私はまだajaxContextと404リターンコードをキャプチャする方法について混乱しています。しかし、別の質問があります。私は、成功と失敗を伴うコーディングについての何かを読んでおり、jQueryの最近のバージョンではもはやエラーを使用していません。

したがって、コードを変更してdoneを使用し、失敗する必要があります。どのようにして404をチェックできますか?

18
Alan2

エラー関数を次のように置き換えます...

error:function (xhr, ajaxOptions, thrownError){
    if(xhr.status==404) {
        alert(thrownError);
    }
}
31
JayTee

404エラーは、errorプロパティに接続された匿名関数によって処理されます。 URLへのHTTPリクエストの成功(2xxなど)以外は、エラーメソッドをトリガーします。以下はあなたの目的のために機能します:

_error : function(jqXHR, textStatus, errorThrown) { 
    if(jqXHR.status == 404 || errorThrown == 'Not Found') 
    { 
        console.log('There was a 404 error.'); 
    }
}
_

JQueryのドキュメントでsuccessおよびerror関数を削除する場合、それらは$.ajax()のプロパティではなく、jqXHRクラスの関数を参照しています。

4
BenM