ユーザーがボタンをクリックしたときにjQueryの.load()
メソッドを使用してデータを取得しています。
ロードが正常に完了した後、結果を_<div>
_に表示します。
問題は、データの取得中にload()
でエラーが発生する場合があることです。
load()
でエラーをキャッチするにはどうすればよいですか?
読み込みエラーが発生する仕組みについて少し説明します...
$("body").load("/someotherpath/feedsx.pxhp", {limit: 25},
function (responseText, textStatus, req) {
if (textStatus == "error") {
return "oh noes!!!!";
}
});
編集:コメントで要求されたルートパス以外のパスを追加しました。
Furlafur Waageが示唆するように、コールバックをload()関数に渡すことに加えて、「グローバル」エラーハンドラー(ページ上のすべてのajax呼び出しに対してグローバルなグローバル)を登録することもできます。
グローバルAjaxエラーハンドラーを登録するには、少なくとも2つの方法があります。
ajaxError()
でエラーハンドラーのみを登録します。
_$.ajaxError(function(event, request, settings) {
alert("Oops!!");
});
_
または、 ajaxSetup()
を使用して、エラーハンドラーと他のプロパティを同時に設定します。
_$.ajaxSetup({
timeout: 5000,
error: function(event, request, settings){
alert("Oops!");
}
});
_
load()はコールバックを提供します。
折り返し電話。
ajaxリクエストが完了したときに呼び出される関数(必ずしも成功とは限りません)。
これがIIRCの方法です。 (テストしていません)
$("#feeds").load("feeds.php", {limit: 25},
function (responseText, textStatus, XMLHttpRequest) {
// XMLHttpRequest.responseText has the error info you want.
alert(XMLHttpRequest.responseText);
});
Electricツールボックスには、 「jQueryを使用したコンテンツの読み込みAJAXおよび失敗への対処)」 という記事があり、質問に答えているようです。
明らかに、指定したコールバック関数には、応答、ステータス、およびXmlHttpRequestオブジェクトが渡されるため、ajaxリクエストのステータスを判断し、それに応じて条件を処理できます。