0

我在 my.js 中进行错误处理,在那里我对其他服务器进行跨域调用,对于动态 HTML 模板,我正在使用 Mustache.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 中有 .fail() 来捕获 getJSON 中的 错误。我能够捕获 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=?参数和响应来看, jQuery191...780({...})jQuery 似乎正在生成一个 JSONP 请求。JSONP 请求不受同源策略限制,但它们确实具有以下限制,如此处所述

注意:跨域脚本和跨域 JSONP 请求不会调用此 [error] 处理程序。

解决方案:

  1. 如果服务器允许跨域请求,则创建纯 JSON 请求
  2. 看看这些问题的答案:
  3. 使用jquery-jsonp——它不会给你 HTTP 错误代码
于 2013-09-02T11:25:54.210 回答