By using jquery ajax function, I can do something like:
$.ajax({ url: url, type: 'GET', async: true, dataType: 'json', data: data, success: function(data) { //Handle server response here }, error: function(xhr, status, error){ //Handle failure here } });
I got two questions to ask based on above code:
When will the jquery.ajax() error
callback be called??
What if server response to me a json object with string message "There is an error". Which means the request is still send successfully, but I got server response {message: "There is an error"}
.
I think no matter what string value server is responsed, if client got server's response, the jquery.ajax() success
callback will be triggered anyway.
I'd like to ask if server specifically returns to me a JSON object with string value like {message: 'There is an error'}
, could server do something so that this response could be handled in jquery.ajax() error
callback instead of success
callback?
Whenever an Ajax request completes with an error, jQuery triggers the ajaxError event. Any and all handlers that have been registered with the . ajaxError() method are executed at this time. Note: This handler is not called for cross-domain script and cross-domain JSONP requests.
The function specified by the ajaxError() function is called when the request fails or generates the errors. We can use the fail() callback function as well on the JavaScript promise object( the jqXHR object return by the $. ajax() function) to run the specific function on the ajax request fail.
If an AJAX request fails, you can react to the failure inside the callback function added via the fail() function of the object returned by the $. ajax() function. Here is a jQuery AJAX error handling example: var jqxhr = $.
The error callback will be executed when the response from the server is not going to be what you were expecting. So for example in this situations it:
In your situation the data is correct (it's a JSON message). If you want to manually trigger the error callback based on the value of the received data you can do so quite simple. Just change the anonymous callback for error to named function.
function handleError(xhr, status, error){ //Handle failure here } $.ajax({ url: url, type: 'GET', async: true, dataType: 'json', data: data, success: function(data) { if (whatever) { handleError(xhr, status, ''); // manually trigger callback } //Handle server response here }, error: handleError });
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With