1

为了测试当我尝试加载不存在的资源(与我的 Web 服务器在同一主机上)时会发生什么,我设置了以下代码:

var wrongURL = "http://foo/bar.json"; // non-existent resource
$.ajax({
    url: wrongURL,
    dataType: 'json',
    success: function(jsonResponse, textStatus, jqXHR) {
        $.('#divOfInterest').html("you should never see this");
    },
    error: function(jqXHR, textStatus, errorThrown) {
        $.('#divOfInterest').html("sorry, could not find URL");
    }
});
// remainder of code...

我没有看到我的 div 显示消息sorry, could not find URL,而是收到控制台错误:

GET http://foo/bar.json 404 (Not Found) - bar.json

error调用中和块之后的任何内容$.ajax()(即// remainder of code)都不会被执行

看起来我的浏览器(Safari 5.1.5)卡在 404 错误上并提前离开了该功能。

如何优雅地处理错误并执行其余代码?

4

2 回答 2

2

据我了解,您需要一个服务器来实际返回错误状态以运行该错误函数。

例如,如果您为 Soundcloud 上不存在的用户请求 JSON 对象,您将收到从服务器返回的 404 错误。

但是,如果您错误地输入了完整的 URI,则根本没有返回任何资源,也没有状态代码。

于 2012-04-06T22:09:33.210 回答
1

只需替换$.('#divOfInterest')$('#divOfInterest'):D

演示:http: //jsfiddle.net/9Ua8J/

于 2012-04-06T22:08:16.973 回答