$.getJSON 获取状态
Posted
技术标签:
【中文标题】$.getJSON 获取状态【英文标题】:$.getJSON get status 【发布时间】:2012-11-01 03:57:33 【问题描述】:执行跨域查询,如果运行的URL不可用(404),如何执行某个功能? 我尝试这样的事情:
$.getJSON(
url:'example.php?callback=?',
statusCode:
404:function()alert('404');
,
success :function(data)//do stuff
);
【问题讨论】:
您的url
参数后面不是缺少,
吗?
您阅读文档了吗?
Bruno Vieira - 不,我在这里犯了一个错误,创建问题
轨道上的光速竞赛 - 是的,我读过它,但不幸的是那里给出的例子没有帮助
【参考方案1】:
我发现这种方法可以解决我遇到的类似问题,我想以不同的方式处理特定的状态代码。例如下面的“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");
);
有3个参数传递给fail方法:
jqXHR.fail(function(jqXHR, textStatus, errorThrown) );
错误回调选项的替代构造,.fail() 方法替换了已弃用的 .error() 方法。参考 deferred.fail() 了解实现细节。
有关 jQuery 文档,请参阅:http://api.jquery.com/jQuery.ajax/#jqXHR http://api.jquery.com/deferred.fail/
【讨论】:
IMO 这应该是公认的答案,因为它依赖于回调而不是依赖于响应的预定义超时。【参考方案2】: $.getJSON(
url:'example.php?callback=?'
,
success :function(data)//do stuff
)
.error(function(e, x) if (x.status == 404) alert('404 - page was not available'); );
【讨论】:
【参考方案3】:Matt 在this question 中发布了一个很棒的answer,可能会解决您的问题。
您必须在 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 状态属性提出了一个很好的建议。 我会投票支持他的解决方案,但我缺乏代表点数。
【讨论】:
您添加了'success':'true'
吗?
KeYan 示例不起作用...也许我做错了什么? var success = false; $.getJSON(sl+'/404/com.add.lics.php?callback=?',function(g) success = true; ); setTimeout(function() if (!success) alert("Houston, we have a problem."); , 5000);
这实际上工作正常。您成功地捕捉到了 if 语句中的延迟!超时结束假定您的服务需要很长时间才能响应,因此是 404。
编辑了字符串值以反映实际发生的情况,因为“问题”这个词似乎引起了一些混乱
好的,我尝试将此示例与不同类型的链接一起使用,它可以工作。谢谢!【参考方案4】:
获取 JSONP 请求的状态码本质上是不可能的。
您可以向$.ajax
调用添加一般错误处理程序。
【讨论】:
以上是关于$.getJSON 获取状态的主要内容,如果未能解决你的问题,请参考以下文章
jQuery的getjson问题 用getjson获取一个文本文件 代码和症状如下