AJAXリクエストがサイトに送信されると、サーバー側のエラーはjQuery promiseアプローチで簡単に処理されます。.done()
、.fail()
など。ただし、一部のリクエスト(無効なサイトやクロスオリジンリクエストを受け入れないサイトなど)では、呼び出しが行われるとすぐに例外が発生します。コンソールのエラーの例を次に示します。
XMLHttpRequestは
http://someotherserver/api/blahblah
をロードできません。 Originhttp://localhost:52625
はAccess-Control-Allow-Originでは許可されていません。
はい、私はCORSについて知っています...それは問題ではありません。私が実際にやっているのは、サーバーのIP /名前が正しいかどうかをテストするためにWeb API呼び出しを試みることです
JQueryリクエスト構文のerror
オプションを知っています。
$.ajax({
url: remoteURL,
type: 'GET',
error: function (err) {
console.log("AJAX error in request: " + JSON.stringify(err, null, 2));
}
}).etc.etc.
エラーはここで処理されますが、例外は引き続きコンソールに記録されます。上記をtry-catch
ブロックでラップすることは理にかなっているように見えますが、それは役に立たないようです。
この質問 が見つかりましたが、解決策にはjQueryコードのハッキングが含まれます。確かに、これらのエラーをキャッチし、コンソールログを詰まらせないためのより良い方法がありますか?
これを試して:
$.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));
}
});
Google ChromeでWeb開発者コンソールを使用できます。 F12を押します。応答を確認するには[ネットワーク]タブを使用し、JavaSvriptとjQueryおよびAjaxのエラーには[コンソール]タブを使用できます。 :)
あなたのajax関数に追加してこれを試してください:
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);