使用jQuery getJSON时如何处理500错误?
有一些关于使用getJSON()
and JSONP进行错误处理的问题,但我没有使用JSONP,只使用普通的JSON。
Another answer建议在致电.ajaxSetup()
之前使用getJSON()
,所以我试过了:
$.ajaxSetup({
"error":function() {
alert('Error!');
}});
$.getJSON('/book_results/', function(data) { # etc
但我发现警报总是会触发,即使结果格式正确。
有什么想法吗?
答案 0 :(得分:25)
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 );
}
});
答案 1 :(得分:10)
如果您使用的是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"); });
适合我的作品。我希望这有帮助
答案 2 :(得分:8)
你可以在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 + 强> 当text不是正确的json字符串或任何其他失败解决方案时,将触发失败回调
答案 3 :(得分:0)
使用jQuery 3.2.1:
{{1}}
答案 4 :(得分:-1)
请执行以下操作。 Pseduo代码:
$.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);
}
}