Hidden Ajax Errors with jQuery
If you use Ajax with jQuery, you may have noticed that you don't get any error messages when things go wrong. Even if you have major bugs in your callback functions, jQuery just silently fails, sweeping any errors under the rug, and leaving you clueless as to what just happened.
For example, you can do this and you won't get any errors:
$.get('page.html', function(){ this_function_does_not_exist(); });
There are two ways to fix this. You can use $.ajax
with the error parameter, passing an error handling function for that particular Ajax call. Or, you can define a global Ajax error handler. If you do a lot of Ajax, and you use Firebug, the latter is a great option. Try this:
$(document).ajaxError(function(){ if (window.console && window.console.error) { console.error(arguments); } });
After running this code, you'll start getting error messages in your Firebug console (if anything breaks with your Ajax calls or callbacks). The error messages aren't the greatest, but at least you don't have to stay in the dark any longer.
Comments
1 . Jörn Zaefferer on July 6th, 2007
That's a great tip. That generic error handler inside jQuery's ajax method can be quite annoying otherwise. I wonder if these two lines should go into jQuery core...
2 . Andy Cai on July 11st, 2007
like the jquery.
3 . jonnix on November 8th, 2007
Thank you very much. This tip helped me find an error I have been guessing for during 2 days.
4 . Acronyms on April 2nd, 2008
I used similar way, put creating a separate function.
5 . colin on May 8th, 2008
Thank you, this idea just saved me a lot of guess work
6 . Braden on May 14th, 2008
I'm confused--this doesn't seem to work with 1.2.3. Did they at one point try { success() } catch() { handleError(); }? I know Dojo does that, but I don't see it in 1.2.3 or 1.0.0.
7 . Mat on July 27th, 2008
Thanks for the tip :)
8 . Vlad on September 2nd, 2008
Thank you!
9 . LaPeGa on November 26th, 2008
Thanxxx
10 . Ramiro on March 6th, 2009
Great Tip!!! specially the debug to console using firebug. Thanks
11 . zoltantoth on May 10th, 2009
his is exactly what I was searching for. You could not explain it simplier.
Thank you.
P.s.:
I would draw your attention to the error in the comment engine:
If I use a single quote, you are double escape-ing it, so it throws an SQL error, so the shortened "could not" will not work.
12 . xxx on August 30th, 2010
that was great tip - thanks