【问题标题】:jQuery jsonp catch "Failed to load resources…"jQuery jsonp 捕获“加载资源失败……”
【发布时间】:2025-11-27 15:45:02
【问题描述】:

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

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) {} 

但这也无济于事。

【问题讨论】:

    标签: javascript jquery ajax cordova jsonp


    【解决方案1】:

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

    【讨论】:

      最近更新 更多