Mat*_*eau 6 javascript error-handling jquery json jsonp
我正在使用jQuery.getJSON()可能不存在的URL(不同的域).有没有办法让我捕获错误"无法加载资源"?由于此调用的异步性质,似乎try/catch不起作用.
我也不能用jQuery.ajax()"s" error:.从文献:
注意:不会为跨域脚本和JSONP请求调用此处理程序.
Joy*_*tta 11
如果您知道从远程服务返回的成功结果的最坏情况延迟,则可以使用超时机制来确定是否存在错误.
var cbSuccess = false;
$.ajax({
url: 'http://example.com/.../service.php?callback=?',
type: 'get',
dataType: 'json',
success: function(data) {
cbSuccess = true;
}
});
setTimeout(function(){
if(!cbSuccess) { alert("failed"); }
}, 2000); // assuming 2sec is the max wait time for results
Run Code Online (Sandbox Code Playgroud)
Bry*_*ing -2
延迟对象(jQuery 1.5 中的新功能)听起来正是您正在寻找的:
1.5 版中引入的 jQuery.Deferred 是一个可链接的实用程序对象,可以将多个回调注册到回调队列中、调用回调队列以及中继任何同步或异步函数的成功或失败状态。
http://api.jquery.com/category/deferred-object/
编辑:
以下代码对我来说效果很好:
function jsonError(){
$("#test").text("error");
}
$.getJSON("json.php",function(data){
$("#test").text(data.a);
}).fail(jsonError);
Run Code Online (Sandbox Code Playgroud)
json.php 看起来像这样:
print '{"a":"1"}';
Run Code Online (Sandbox Code Playgroud)
如果 json.php 的路径不正确或 JSON 格式错误,则会触发错误函数。例如:
print '{xxx"a":"1"}';
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7377 次 |
| 最近记录: |