web-dev-qa-db-ja.com

jQuery load()メソッドでエラーをキャッチする方法

ユーザーがボタンをクリックしたときにjQueryの.load()メソッドを使用してデータを取得しています。

ロードが正常に完了した後、結果を_<div>_に表示します。

問題は、データの取得中にload()でエラーが発生する場合があることです。

load()でエラーをキャッチするにはどうすればよいですか?

50
M Aung

load()ドキュメント。

読み込みエラーが発生する仕組みについて少し説明します...

$("body").load("/someotherpath/feedsx.pxhp", {limit: 25}, 
    function (responseText, textStatus, req) {
        if (textStatus == "error") {
          return "oh noes!!!!";
        }
});

編集:コメントで要求されたルートパス以外のパスを追加しました。

76
cgp

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!");
    }
});
_
11
matt b

load()はコールバックを提供します。

折り返し電話。
ajaxリクエストが完了したときに呼び出される関数(必ずしも成功とは限りません)。

これがIIRCの方法です。 (テストしていません)

$("#feeds").load("feeds.php", {limit: 25}, 
    function (responseText, textStatus, XMLHttpRequest) {
        // XMLHttpRequest.responseText has the error info you want.
        alert(XMLHttpRequest.responseText);
});
6
Ólafur Waage

Electricツールボックスには、 「jQueryを使用したコンテンツの読み込みAJAXおよび失敗への対処)」 という記事があり、質問に答えているようです。

明らかに、指定したコールバック関数には、応答、ステータス、およびXmlHttpRequestオブジェクトが渡されるため、ajaxリクエストのステータスを判断し、それに応じて条件を処理できます。

0
vezult