Coding with Jesse

Hidden Ajax Errors with jQuery

July 4th, 2007

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

Jörn Zaefferer

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

Andy Cai

like the jquery.

3 . jonnix on November 8th, 2007

jonnix

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

Acronyms

I used similar way, put creating a separate function.

5 . colin on May 8th, 2008

colin

Thank you, this idea just saved me a lot of guess work

6 . Braden on May 14th, 2008

Braden

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

Mat

Thanks for the tip :)

8 . Vlad on September 2nd, 2008

Vlad

Thank you!

9 . LaPeGa on November 26th, 2008

LaPeGa

Thanxxx

10 . Ramiro on March 6th, 2009

Ramiro

Great Tip!!! specially the debug to console using firebug. Thanks

11 . zoltantoth on May 10th, 2009

zoltantoth

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

xxx

that was great tip - thanks

Comments are closed, but I'd still love to hear your thoughts.