jQuery:处理 getJSON() 中的错误?
Posted
技术标签:
【中文标题】jQuery:处理 getJSON() 中的错误?【英文标题】:jQuery: handle errors in getJSON()? 【发布时间】:2011-07-20 07:46:11 【问题描述】:使用 jQuery 的 getJSON 时如何处理 500 错误?
关于getJSON()
and JSONP 的错误处理有几个问题,但我没有使用 JSONP,只是使用普通 JSON。
Another answer 建议在调用getJSON()
之前使用.ajaxSetup()
,所以我尝试了这个:
$.ajaxSetup(
"error":function()
alert('Error!');
);
$.getJSON('/book_results/', function(data) # etc
但我发现警报总是会触发,即使结果格式正确。
有什么想法吗?
【问题讨论】:
你能举例说明返回什么并触发警报吗? 它会触发“错误”功能,因为它不存在,而你只是做了一个 :) @Bob - 谢谢 - 是什么造成了错误? :) 在这种情况下,您正在创建一个名为 error 的函数。但真正的错误是什么,我不知道,因为我没有你的文件:) 谢谢你的标记,希望你能找到你的错误! 【参考方案1】:getJSON
方法本身不会返回错误,但您可以深入了解在回调中作为参数返回的 xhr 对象。
getJSON
方法是jQuery.ajax
的简写函数。使用jQuery.ajax
可以轻松实现错误处理:
$.ajax(
url: 'http://127.0.0.1/path/application.json',
dataType: 'json',
success: function( data )
alert( "SUCCESS: " + data );
,
error: function( data )
alert( "ERROR: " + data );
);
【讨论】:
【参考方案2】:如果您使用 jquery 1.5 或更高版本,您可以使用新方法 .success(function)、.error(function) 和 .complete(function)
来自http://api.jquery.com/jQuery.get/的示例
// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.get("example.php", function()
alert("success");
)
.success(function() alert("second success"); )
.error(function() alert("error"); )
.complete(function() alert("complete"); );
// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function() alert("second complete"); );
非常适合我。我希望这会有所帮助
【讨论】:
【参考方案3】:你可以在 jquery api getJSON 上看到它:http://api.jquery.com/jQuery.getJSON/
$.getJSON(url).done(function(data)
$("#content").append(data.info);
)
.fail(function(jqxhr)
alert(jqxhr.responseText);
);
//jquery1.5+ 当文本不是正确的 json 字符串或任何其他失败解决方案时,将触发失败回调
【讨论】:
【参考方案4】:使用 jQuery 3.2.1:
$.getJSON('/api/feed/update', function (data)
console.log(data);
).catch(function (jqXHR, textStatus, errorThrown)
console.error(jqXHR);
console.error(textStatus);
console.error(errorThrown);
);
【讨论】:
【参考方案5】:请执行以下操作。伪代码:
$.getJSON('/path/to_your_url.do?dispatch=toggle&' + new Date().getTime(), function(data, status, xhr)
if( xhr.status == 200 )
// all good and do your processing with 'data' parameter( your response)
else
//error - check out the values for only in chrome for 'console'
console.log(xhr.status);
console.log(xhr.response);
console.log(xhr.responseText)
console.log(xhr.statusText);
【讨论】:
以上是关于jQuery:处理 getJSON() 中的错误?的主要内容,如果未能解决你的问题,请参考以下文章
jQuery getJSON 的“无效标签”Firebug 错误
使用 JSONP 时如何捕获 jQuery $.getJSON(或数据类型设置为“jsonp”的 $.ajax)错误?
在 jQuery 中将 JSON 数据传递给 .getJSON?
jquery .getJSON 跨域请求 报 Url错误 。callback=?用与跨域的参数,急啊 高手帮忙解决一下。