8

クロスドメインクエリを実行します。実行中のURLが利用できない場合に特定の機能を実行する方法(404)?私はこのようなことを試みます:

$.getJSON({
url:'example.php?callback=?',
statusCode: {
404:function(){alert('404');}
},
success :function(data){//do stuff}
});
4

4 に答える 4

31

このアプローチは、特定のステータスコードを別の方法で処理したいという同様の質問を解決するために見つかりました。たとえば、以下の「404」コード。

$.getJSON(AJAX_URL, function(data) {
    //On Success do something.

}).fail(function(jqXHR) {
    if (jqXHR.status == 404) {
        alert("404 Not Found");
    } else {
        alert("Other non-handled error type");
    }
});

failメソッドに渡されるパラメーターは3つあります。

jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});

エラーコールバックオプションの代替構造である.fail()メソッドは、非推奨の.error()メソッドを置き換えます。実装の詳細については、deferred.fail()を参照してください。

jQueryドキュメントについては、http://api.jquery.com/jQuery.ajax/#jqXHRhttp
: //api.jquery.com/deferred.fail/を参照してください。

于 2013-05-02T15:31:18.243 に答える
1
 $.getJSON({
       url:'example.php?callback=?'       
    },
      success :function(data){//do stuff}
    })
    .error(function(e, x) { if (x.status == 404) alert('404 - page was not available'); });
于 2012-11-12T17:45:26.897 に答える
0

JSONPリクエストのステータスコードを取得することは本質的に不可能です。

呼び出しに一般的なエラーハンドラを追加でき$.ajaxます。

于 2012-11-12T17:40:13.803 に答える
0

マットはあなたの問題を解決するかもしれないこの質問に素晴らしい答えを投稿しました。

successJSONオブジェクトにプロパティを追加する必要があります

var success = false;

$.getJSON(url, function(json) {
    success = true;
    // ... do what you need to do here
});

// Set a 5-second (or however long you want) timeout to check for errors
setTimeout(function() {
    if (!success)
    {
        // Handle error accordingly
        alert("Yup, 404"); // string was "Houston, we have a problem."
    }
}, 5000);

タイムアウトの問題が予想されない場合は、KeYanがXHRステータスプロパティを確認することで適切な提案を行います。私は彼の解決策に投票しますが、担当者のポイントが不足しています。

于 2012-11-12T17:47:08.003 に答える