如何使用jQuery $ .ajax()处理404错误

时间:2012-04-06 21:58:31

标签: jquery ajax http-status-code-404

为了测试当我尝试加载不存在的资源(与我的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错误并且提前离开了该功能。

如何正常处理错误并执行我的其余代码?

2 个答案:

答案 0 :(得分:2)

根据我的理解,您需要一台服务器来实际返回错误状态,以便运行该错误函数。

例如,如果您在Soundcloud上为非现有用户请求JSON对象,则会从服务器返回404错误。

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

答案 1 :(得分:1)

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

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