Aja*_*jay 183 jquery jsonp cross-domain getjson
如何处理getJSON调用中的错误?我试图使用jsonp引用跨域脚本服务,你如何注册错误方法?
小智 274
$.getJSON() 是一种常规AJAX调用的抽象,您必须告诉您需要JSON编码的响应.
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
Run Code Online (Sandbox Code Playgroud)
您可以通过两种方式处理错误:通常(通过在实际调用它们之前配置AJAX调用)或特定方式(使用方法链).
'generic'会是这样的:
$.ajaxSetup({
"error":function() { alert("error"); }
});
Run Code Online (Sandbox Code Playgroud)
而'具体'的方式:
$.getJSON("example.json", function() {
alert("success");
})
.success(function() { alert("second success"); })
.error(function() { alert("error"); })
.complete(function() { alert("complete"); });
Run Code Online (Sandbox Code Playgroud)
fre*_*tix 84
有人给Luciano这些要点:)我刚刚测试了他的答案 - 他是一个类似的问题 - 而且工作得很完美......
我甚至加了50美分:
.error(function(jqXHR, textStatus, errorThrown) {
console.log("error " + textStatus);
console.log("incoming Text " + jqXHR.responseText);
})
Run Code Online (Sandbox Code Playgroud)
use*_*737 65
这是我的补充.
来自http://www.learnjavascript.co.uk/jq/reference/ajax/getjson.html和官方消息来源
" jQuery 1.5中引入的jqXHR.success(),jqXHR.error()和jqXHR.complete()回调方法在jQuery 1.8中已弃用.要准备代码以便最终删除,请使用jqXHR.done(),jqXHR .fail()和jqXHR.always()代替. "
我这样做了,这是Luciano的更新代码片段:
$.getJSON("example.json", function() {
alert("success");
})
.done(function() { alert('getJSON request succeeded!'); })
.fail(function() { alert('getJSON request failed! '); })
.always(function() { alert('getJSON request ended!'); });
Run Code Online (Sandbox Code Playgroud)
并使用错误描述并将所有json数据显示为字符串:
$.getJSON("example.json", function(data) {
alert(JSON.stringify(data));
})
.done(function() { alert('getJSON request succeeded!'); })
.fail(function(jqXHR, textStatus, errorThrown) { alert('getJSON request failed! ' + textStatus); })
.always(function() { alert('getJSON request ended!'); });
Run Code Online (Sandbox Code Playgroud)
如果您不喜欢警报,请将其替换为 console.log
$.getJSON("example.json", function(data) {
console.log(JSON.stringify(data));
})
.done(function() { console.log('getJSON request succeeded!'); })
.fail(function(jqXHR, textStatus, errorThrown) { console.log('getJSON request failed! ' + textStatus); })
.always(function() { console.log('getJSON request ended!'); });
Run Code Online (Sandbox Code Playgroud)
小智 12
我知道已经有一段时间了,因为有人在这里回答,海报可能已经从这里或其他地方得到了答案.但我认为这篇文章将帮助任何人在执行getJSON请求时寻找跟踪错误和超时的方法.因此,在我对问题的回答之下
getJSON结构如下(在http://api.jqueri.com上找到):
$(selector).getJSON(url,data,success(data,status,xhr))
Run Code Online (Sandbox Code Playgroud)
大多数人都使用它来实现
$.getJSON(url, datatosend, function(data){
//do something with the data
});
Run Code Online (Sandbox Code Playgroud)
他们使用url var来提供JSON数据的链接,datatosend作为添加"?callback=?"必须发送的变量和其他变量的地方,以获取返回的正确JSON数据,以及成功函数作为处理数据的函数.
但是,您可以在成功函数中添加status和xhr变量.状态变量包含以下字符串之一:"success","notmodified","error","timeout"或"parsererror",xhr变量包含返回的XMLHttpRequest对象(可在w3schools上找到)
$.getJSON(url, datatosend, function(data, status, xhr){
if (status == "success"){
//do something with the data
}else if (status == "timeout"){
alert("Something is wrong with the connection");
}else if (status == "error" || status == "parsererror" ){
alert("An error occured");
}else{
alert("datatosend did not change");
}
});
Run Code Online (Sandbox Code Playgroud)
通过这种方式,可以轻松跟踪超时和错误,而无需实现请求完成后启动的自定义超时跟踪器.
希望这有助于某人仍在寻找这个问题的答案.
| 归档时间: |
|
| 查看次数: |
221600 次 |
| 最近记录: |