jQuery jsonp catch"无法加载资源......"

时间:2015-11-14 19:51:50

标签: javascript jquery ajax cordova jsonp

我有一个Javascript函数,我从服务器通过JSONP获取数据。我试图模拟服务器错误或缺乏互联网访问(它应该在一个cordova应用程序中运行,所以它可能是客户端无法访问互联网),但我无法抓住错误。这是我的代码:

var completed =  false;
jQuery.ajax({
    url: "http://www.someDomainThatDoesn'tWork.com/getsContent.php?callback=?",
    dataType: "json",
    success: function(data) {
        completed = true
        console.log(data);
    },
    error: function() {
        console.log("fail");            
    },
    statusCode: {
        404: function() {
            console.log("fail 2");
        }
    }
}).fail(function() {
    console.log("fail 3");
}).always(function() {
    if (!completed) {
        console.log("fail 4");
    }
});

正如您所看到的,我尝试在四个地方捕捉(不同)错误。但是,如果我将url编辑为不存在的url,那么javascript就会中止并给我错误

  

无法加载资源:服务器响应状态为404(未找到)

并且没有错误捕获器被执行。

jQuery.ajax()的文档中,它说

  

注意:不会为跨域脚本和跨域JSONP请求调用此处理程序。   所以我想我不应该感到惊讶。

有没有办法捕获此错误?我也试图用

来接受它
try{} catch(error) {} 

但是,这也没有做到。

1 个答案:

答案 0 :(得分:0)

因为JSONP方法返回一个脚本,它可能会以静默方式失败,您可能需要更改服务器以使用CORS而不使用JSONP才能获得正确的错误处理。