27

AJAX リクエストがサイトに送信されると、サーバー側のエラーは jQuery promise アプローチで簡単に処理されます。.done().fail()など。ただし、一部のリクエスト (無効なサイトやクロスオリジン リクエストを受け付けないサイトなど) では、呼び出しが行われるとすぐに例外が発生します。コンソールに表示されるエラーの例を次に示します。

XMLHttpRequest を読み込めませんhttp://someotherserver/api/blahblahhttp://localhost:52625Access-Control-Allow-Origin でオリジンが許可されていません。

はい、私はCORSについて知っています...それは問題ではありません。私が実際にやっていることは、サーバーのIP /名前が正しいかどうかをテストするためにWeb API呼び出しを試みることです

errorjQueryリクエスト構文のオプションを認識しています:

$.ajax({
    url: remoteURL,
    type: 'GET',
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }
}).etc.etc.

エラーはここで処理されますが、例外は引き続きコンソールに記録されます。上記をブロックでラップすることは合理的に思えましたtry-catchが、それは役に立たないようです。

この質問を見つけましたが、解決策には jQuery コードのハッキングが含まれます。これらのエラーをキャッチし、コンソール ログを詰まらせないためのより良い方法は確かにありますか??

4

2 に答える 2

14

これを試して:

$.ajax({
    url: remoteURL,
    type: 'GET',
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }
}).always(function(jqXHR, textStatus) {
    if (textStatus != "success") {
        alert("Error: " + jqXHR.statusText);
    }
});

XHR リスナー:

$.ajax({
    url: remoteURL,
    type: 'GET',
    xhr: function(){
        var xhr = new window.XMLHttpRequest();
        xhr.addEventListener("error", function(evt){
            alert("an error occured");
        }, false);
        xhr.addEventListener("abort", function(){
            alert("cancelled");
        }, false);

        return xhr;
    },
    error: function (err) {
        console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
    }
});
于 2013-09-18T06:13:27.143 に答える