jQuery: handle errors in getJSON()?
Solution 1
The getJSON
method does not natively return errors but you could dive into the xhr object that is returned as a parameter in the callback.
The getJSON
method is a shorthand function for jQuery.ajax
. Using jQuery.ajax
you can easily achieve error handling:
$.ajax({
url: 'http://127.0.0.1/path/application.json',
dataType: 'json',
success: function( data ) {
alert( "SUCCESS: " + data );
},
error: function( data ) {
alert( "ERROR: " + data );
}
});
Solution 2
If you are using the jquery version 1.5 or higher you can use the new methods .success(function), .error(function) and .complete(function)
Example from 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"); });
Works perfect for me. I hope this helps
Solution 3
you can see it on 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+ the fail callback will trigger when text is not the correct json string or any other fail solutions
AP257
Updated on July 31, 2022Comments
-
AP257 almost 2 years
How do I handle 500 errors when using jQuery's getJSON?
There have been a couple of questions about error handling with
getJSON()
and JSONP, but I'm not working with JSONP, just ordinary JSON.Another answer suggests using
.ajaxSetup()
before callinggetJSON()
, so I tried this:$.ajaxSetup({ "error":function() { alert('Error!'); }}); $.getJSON('/book_results/', function(data) { # etc
But I find that the alert always triggers, even when the result is well-formed.
Any ideas?