2009-04-15 2 views
40

jQueryの​​メソッドを使用して、ユーザーがボタンをクリックしたときにデータを取得しています。jQueryのload()メソッドでエラーをキャッチする方法

ロードが正常に終了した後、結果は<div>に表示されます。

データを取得中にload()にエラーが発生することがあります。

load()でエラーを検出するにはどうすればよいですか?

答えて

5

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

コールバック。
ajaxリクエストが完了したときに呼び出される関数です(必ずしも成功するとは限りません)。

これがIIRCの仕組みです。ページ上のすべてのAJAX呼び出しのためのグローバルでのようなグローバル(オラフルWaageが示唆するように、あなたはまた、「グローバル」エラーハンドラを登録することができ、負荷()関数へのコールバックを渡すだけでなく

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

関数IS responseTextの最初の引数です。 XMLHttpRequest.responseTextを使用する必要はありません... –

10

を(それをテストしていません) )。

グローバルAjaxのエラーハンドラを登録するには、少なくとも2つの方法があります。

登録がajaxError()とだけエラーハンドラ:

$.ajaxError(function(event, request, settings) { 
     alert("Oops!!"); 
}); 

か、でエラーハンドラおよびその他のプロパティを設定するためにajaxSetup()を使用同時に:

$.ajaxSetup({ 
    timeout: 5000, 
    error: function(event, request, settings){ 
     alert("Oops!"); 
    } 
}); 
66

load() documentation.

ロードエラーが発生したどのようにほんの少しの背景0

...

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

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

+0

ありがとうaltCongnito.itは仕事です! btw、別の関連する質問がありますか? 別の問題はファイルパスです!私はasp.netを使用します。 マスターページにload()コードを書きます。パラメータUrlはfeedsx.aspxに似ています。 コンテンツページがルートフォルダの下にある場合は動作しますが、コンテンツページが他のサブフォルダの下にある場合は動作しません。ヘルプ –

+0

jqueryドキュメントへのリンクありがとうございます。私は彼らが存在することさえ知りませんでした! –

+0

ありがとう - 負荷の失敗は、主にターゲットページを読み込む際の問題によるものです。 – Resh32

0

電動工具ボックスには、質問にお答えする"Loading content with jQuery AJAX and dealing with failures"という記事があります。

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

関連する問題