0

私は、Mustache.js を使用している動的 HTML テンプレートに対しても、他のサーバーへのクロス ドメイン呼び出しを行っている my.js でエラー処理を行っています。

$.getJSON(url, function(data, textStatus, xhr) {
  $.each(data, function(i, data) {
    introPage(data);
  });
}).fail(function(Error) {
        alert(Error.status);
}); 

function introPage(data )
{
    $.getJSON('myphp.php?jsoncallback=?&template='+testTemplate, function(msg) {
        // my operations

    }).error(function(data) {
            }); 
}

getJSONのエラーをキャッチするために、 getJSON に .fail() があり ます。404 エラー (見つかりません) をキャッチできますが、406 エラー (受け入れられない、または無効な入力と言う) または 401 エラー (不正アクセス) になると、.fail() が機能しないようです

しかし、コンソールでエラーをスローします コンソールの JSON エラー

また、リンクをクリックしたとき。以下の形式でjqueryコールバックのエラーを示します

jQuery191014790988666936755_1378113963780({
  "error": {
    "code": 406,
    "message": "Not Acceptable: Sorry, There are no results to display for the given input."
  }
});

今、私の JS でこのエラーを取得する方法を考えています。エラー コード 406 と 401 が表示されません。適切なエラー ページを表示するには、そのエラー コードが必要です。

ありがとうございました

4

1 に答える 1

1

jsoncallback=?パラメータと responseから判断すると、 jQuery191...780({...})jQuery が JSONP リクエストを生成しているようです。JSONP リクエストは同一オリジン ポリシーの制限の対象ではありませんが、ここで説明されているように次の制限があります。

注: この [エラー] ハンドラーは、クロスドメイン スクリプトおよびクロスドメイン JSONP リクエストでは呼び出されません。

ソリューション:

  1. サーバーがクロスドメイン リクエストを許可する場合は、純粋な JSON リクエストを作成します。
  2. 次の質問に対する回答を見てください。
  3. jquery-jsonpを使用します -- HTTP エラー コードは表示されません
于 2013-09-02T11:25:54.210 に答える