error handling with .post()
I have to modify a project written by someone else. Because the code is a mess I can't really change this $.post() (or replace it by $.ajax()). What I need to do, is to know if the post returns something else then JSON and return it.
$.post('balbal.html', json, function(data) { ... my coude ... }, 'json')
I can see the post response in the console.log. Is there a simple way to retrieve it?
Solution 1:
Define the error callback immediately after the post. Note the semi-colon placement only at the end.
$.post('balbal.html', json, function(data) {
// ... my code ...
})
.fail(function(response) {
alert('Error: ' + response.responseText);
});
http://api.jquery.com/deferred.fail/
For older versions of jQuery (pre-1.8) Use .error instead with the same syntax.
Solution 2:
There's a couple of ways to do it, but if you're not getting the error response available through the returned JSON data object, you can use $.ajaxSetup() to define defaults for all ajax calls through jQuery. Even though the $.post()
method doesn't specify an error handler or callback in and of itself, the $.ajaxSetup()
method will capture any ajax faults and execute the function you define for it.
Alternatively, there is also an $.ajaxError() function that will do the same sort of thing.
Note that this will not work if your JSON response is returned correctly but with a server-side error code. If you want to capture these sorts of cases, you might be best to look for them using the $.ajaxComplete() method
Solution 3:
You can use $.ajax()
($.post
is a shortcut that ends up calling it anyway), and define the error callback.
Or, if you really do not want to do that, call
$.ajaxError(function(){
//error handler
})
before that $.post