如何处理getJSON调用中的错误?我试图引用一个跨域脚本服务使用jsonp,你如何注册一个错误方法?
当前回答
$. getjson()是一种常规AJAX调用的抽象,在这种调用中,您必须告诉您需要一个JSON编码的响应。
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
可以用两种方式处理错误:一般地(在实际调用AJAX调用之前配置它们)或特定地(使用方法链)。
“generic”是这样的:
$.ajaxSetup({
"error":function() { alert("error"); }
});
以及“具体”的方式:
$.getJSON("example.json", function() {
alert("success");
})
.done(function() { alert("second success"); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
其他回答
在某些情况下,使用这种方法可能会遇到同步问题。 我在setTimeout函数中编写了回调调用,它可以同步工作=)
E.G:
function obterJson(callback) {
jqxhr = $.getJSON(window.location.href + "js/data.json", function(data) {
setTimeout(function(){
callback(data);
},0);
}
我知道已经有一段时间没有人在这里回答了,发帖者可能已经从这里或其他地方得到了答案。然而,我确实认为这篇文章将帮助任何寻找在执行getJSON请求时跟踪错误和超时的方法的人。因此下面是我对这个问题的回答
getJSON结构如下(可以在http://api.jqueri.com):上找到)
$(selector).getJSON(url,data,success(data,status,xhr))
大多数人使用
$.getJSON(url, datatosend, function(data){
//do something with the data
});
他们使用url var提供到JSON数据的链接,使用datatosend作为添加“?callback=?”和其他必须发送以获得正确JSON数据返回的变量的地方,使用success函数作为处理数据的函数。
但是,您可以在成功函数中添加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");
}
});
这样可以很容易地跟踪超时和错误,而不必实现自定义的超时跟踪器,该跟踪器在请求完成后启动。
希望这能帮助那些仍在寻找这个问题答案的人。
$.getJSON(“example.json”, function() { 警报(“成功”); }) .success(function() { alert(“second success”); }) .error(function() { alert(“error”); })
在jQuery 2.x中已修复;jQuery 1。X你将永远不会得到一个错误回调
$. getjson()是一种常规AJAX调用的抽象,在这种调用中,您必须告诉您需要一个JSON编码的响应。
$.ajax({
url: url,
dataType: 'json',
data: data,
success: callback
});
可以用两种方式处理错误:一般地(在实际调用AJAX调用之前配置它们)或特定地(使用方法链)。
“generic”是这样的:
$.ajaxSetup({
"error":function() { alert("error"); }
});
以及“具体”的方式:
$.getJSON("example.json", function() {
alert("success");
})
.done(function() { alert("second success"); })
.fail(function() { alert("error"); })
.always(function() { alert("complete"); });
为什么不
getJSON('get.php',{cmd:"1", typeID:$('#typesSelect')},function(data) {
// ...
});
function getJSON(url,params,callback) {
return $.getJSON(url,params,callback)
.fail(function(jqXMLHttpRequest,textStatus,errorThrown) {
console.dir(jqXMLHttpRequest);
alert('Ajax data request failed: "'+textStatus+':'+errorThrown+'" - see javascript console for details.');
})
}
??
有关使用的.fail()方法(jQuery 1.5+)的详细信息,请参见http://api.jquery.com/jQuery.ajax/#jqXHR
由于jqXHR是由函数返回的,因此类似于
$.when(getJSON(...)).then(function() { ... });
是可能的。
推荐文章
- 一元加/数字(x)和parseFloat(x)之间的区别是什么?
- angularjs中的compile函数和link函数有什么区别
- 删除绑定中添加的事件监听器
- 如何在JSON中使用杰克逊更改字段名
- 很好的初学者教程socket.io?
- HtmlSpecialChars在JavaScript中等价于什么?
- React: 'Redirect'没有从' React -router-dom'中导出
- 如何在React中使用钩子强制组件重新渲染?
- 我如何使用Jest模拟JavaScript的“窗口”对象?
- 我如何等待一个承诺完成之前返回一个函数的变量?
- 在JavaScript中根据键值查找和删除数组中的对象
- 使嵌套JavaScript对象平放/不平放的最快方法
- 如何以及为什么'a'['toUpperCase']()在JavaScript工作?
- 有Grunt生成index.html不同的设置
- 文档之间的区别。addEventListener和window。addEventListener?