Jquery $.getJSON获取状态

Jquery $.getJSON获取状态,jquery,http-status-code-404,getjson,Jquery,Http Status Code 404,Getjson,执行跨域查询,如果运行某个功能的URL不可用,如何执行该功能(404)? 我试着这样做: $.getJSON({ url:'example.php?callback=?', statusCode: { 404:function(){alert('404');} }, success :function(data){//do stuff} }); 从本质上讲,获取JSONP请求的状态代码是不可能的 您可以在$.ajax调用中添加一个通用错误处理程序。发布了一个可以解决您的问题的好消息 $.ge

执行跨域查询,如果运行某个功能的URL不可用,如何执行该功能(404)? 我试着这样做:

$.getJSON({
url:'example.php?callback=?',
statusCode: {
404:function(){alert('404');}
},
success :function(data){//do stuff}
});

从本质上讲,获取JSONP请求的状态代码是不可能的

您可以在
$.ajax
调用中添加一个通用错误处理程序。

发布了一个可以解决您的问题的好消息

 $.getJSON({
       url:'example.php?callback=?'       
    },
      success :function(data){//do stuff}
    })
    .error(function(e, x) { if (x.status == 404) alert('404 - page was not available'); });
您必须在JSON对象上添加
success
属性

var success = false;

$.getJSON(url, function(json) {
    success = true;
    // ... do what you need to do here
});

// Set a 5-second (or however long you want) timeout to check for errors
setTimeout(function() {
    if (!success)
    {
        // Handle error accordingly
        alert("Yup, 404"); // string was "Houston, we have a problem."
    }
}, 5000);

如果您不希望出现超时问题,那么KeYan通过检查XHR status属性提供了一个很好的建议。我会投票支持他的解决方案,但我缺乏代表点。

我发现这种方法可以解决我遇到的类似问题,我希望以不同的方式处理特定的状态代码。例如,“404”代码如下所示

$.getJSON(AJAX_URL, function(data) {
    //On Success do something.

}).fail(function(jqXHR) {
    if (jqXHR.status == 404) {
        alert("404 Not Found");
    } else {
        alert("Other non-handled error type");
    }
});
传递给fail方法的参数有3个:

jqXHR.fail(function(jqXHR, textStatus, errorThrown) {});
错误回调选项的另一个构造是.fail() 方法替换不推荐使用的.error()方法。提到 deferred.fail()获取实现详细信息

有关jQuery文档,请参见:


您的
url
参数后是否缺少
?您是否阅读了文档?布鲁诺·维埃拉-不,我没有​​这里有一个错误,在轨道上创建了一个小问题竞赛-是的,我读过了,但不幸的是给出的示例没有帮助你添加了一个
{'success':'true'}
?KeYan示例不适用于。。。也许我做错了什么<代码>var success=false;$。getJSON(sl+'/404/com.add.lics.php?callback=?',函数(g){success=true;});setTimeout(function(){if(!success){alert(“休斯顿,我们有问题。”);}},5000)这实际上工作正常。您正在成功捕获if语句中的延迟!在超时结束时,假设您的服务需要很长时间才能响应,因此是404。编辑字符串值以反映实际发生的情况,因为“问题”一词似乎会引起一些混乱OK,我尝试使用不同类型的链接使用此示例,结果它工作正常。非常感谢。IMO这应该是可以接受的答案,因为它依赖于回调,而不是依赖于预定义的响应超时。