web-dev-qa-db-ja.com

jQuery $ .getまたは$ .postを使用して、ページの読み込みエラーをキャッチします(例:404)

$ .getまたは$ .postを使用するときに、サーバーエラーまたは404ページが見つからないことをどのようにキャッチしますか?

例えば:

$.post("/myhandler", { value: 1 }, function(data) {
  alert(data);
});

「/ myhandler」の読み込み中にサーバーエラーが発生した場合、またはそれが見つからない場合は、まったく何も起こりません。

エラーが発生した場合、どのように通知しますか?

17
Aximili

$.ajax()errorハンドラーを使用します

$.ajax({
    url: "/myhandler", 
    data: {value: 1},
    type: 'post',
    error: function(XMLHttpRequest, textStatus, errorThrown){
        alert('status:' + XMLHttpRequest.status + ', status text: ' + XMLHttpRequest.statusText);
    },
    success: function(data){}
});

デモ

24
Reigel

あなたができる

$.post("/myhandler", { value: 1 }, function(data) {
  alert(data);
}).fail(function(){ 
  // Handle error here
});

エラーが発生した場合はfailが呼び出されます

43

他の答えは素晴らしいですが、別の解決策があります。つまり、 .ajaxSetup.ajaxError およびその他のAjaxイベントハンドラーです(ajaxSetupドキュメントページを確認してください)。残りの詳細については)。

たとえば、.ajaxErrorを使用すると、特定の要素セットに対して、.post.get.getJSON、および.ajaxからのすべてのajaxエラーのグローバルハンドラーを設定できます。 。

$(selector).ajaxError(function(event, xhr, ajaxOptions, errorThrown) {
    // handle ajax error here
});
5
mekwall

使用する $.ajax代わりに、errorコールバックを使用します。

http://api.jquery.com/jQuery.ajax/

2
coreyward

$.ajaxSetup()stausCode オプションを使用してみてください

$.ajaxSetup({
   statusCode : {
     // called on `$.get()` , `$.post()`, `$.ajax()`
     // when response status code is `404`
     404 : function (jqxhr, textStatus, errorThrown) {
             console.log(textStatus, errorThrown);
           }
     }
 });

// $.get("/path/to/url/");
// $.post("/path/to/url/");
// $.ajax({url:"/path/to/url/"})
1
guest271314