Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I catch jQuery AJAX errors?

When an AJAX request is submitted to a site, server-side errors are easily handled with the jQuery promise approach. .done(), .fail(), etc. However for some requests (e.g. to an invalid site or one that doesn't accept cross-origin requests), an exception occurs immediately as the call is made. Here's an example of one error in the console:

XMLHttpRequest cannot load http://someotherserver/api/blahblah. Origin http://localhost:52625 is not allowed by Access-Control-Allow-Origin.

Yes, I know about CORS...that's not the issue. What I'm actually doing is trying a web api call to test if the server IP/name is correct

I'm aware of the error option in the jQuery request syntax:

$.ajax({     url: remoteURL,     type: 'GET',     error: function (err) {         console.log("AJAX error in request: " + JSON.stringify(err, null, 2));     } }).etc.etc. 

The error is handled here, but exceptions are still logged in the console. It seemed reasonable to wrap the above in a try-catch block, but that doesn't seem to help.

I've found this question, but the solution involves hacking the jQuery code. Surely there's a better way to catch these errors and not clog up the console logs??

like image 373
AR. Avatar asked Sep 18 '13 05:09

AR.


People also ask

How do I find AJAX error?

It can either be "timeout", "error", "notmodified" or "parsererror." http://api.jquery.com/jQuery.ajax/ so what you can conclude is that it's not a timeout, not modified or parse error that you are getting. Make sure in Firebug you see the request set to the correct address and the correct data is being set.

How do you handle errors in AJAX call?

The best way to bubble that error from the server side (using php) to the client side is to send a header through the Ajax request somewhere in the 400's (which is always associated with errors). Once the Ajax request receives this it will trigger your error function.

What triggers jQuery AJAX error?

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.

What causes an AJAX error?

Many pages send AJAX requests to a server. Because this relies on the cooperation of the server and the network between the client and the server, you can expect these AJAX errors: Your JavaScript program receives an error response instead of data; Your program has to wait too long for the response.


2 Answers

try this:

$.ajax({     url: remoteURL,     type: 'GET',     error: function (err) {         console.log("AJAX error in request: " + JSON.stringify(err, null, 2));     } }).always(function(jqXHR, textStatus) {     if (textStatus != "success") {         alert("Error: " + jqXHR.statusText);     } }); 

XHR Listener:

$.ajax({     url: remoteURL,     type: 'GET',     xhr: function(){         var xhr = new window.XMLHttpRequest();         xhr.addEventListener("error", function(evt){             alert("an error occured");         }, false);         xhr.addEventListener("abort", function(){             alert("cancelled");         }, false);          return xhr;     },     error: function (err) {         console.log("AJAX error in request: " + JSON.stringify(err, null, 2));     } }); 
like image 66
Mr.Manhattan Avatar answered Sep 22 '22 10:09

Mr.Manhattan


You can use web developer console in google chrome. Press F12. And use Networks tab for checking response, And for JavaSvript and jQuery and Ajax errors you can use Console tab. :)

Try this by adding to your ajax function :

error: function(XMLHttpRequest, textStatus, errorThrown) {  alert(errorThrown); 
like image 36
Shreejibawa Avatar answered Sep 20 '22 10:09

Shreejibawa