• Hidden Ajax Errors with jQuery

    Jul 4 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 at 8:25am on July 6, 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 at 1:25am on July 11, 2007

    like the jquery.

    3. jonnix at 3:15pm on November 8, 2007

    Thank you very much. This tip helped me find an error I have been guessing for during 2 days.

    4. Acronyms at 3:25am on April 2, 2008

    I used similar way, put creating a separate function.

    5. colin at 5:42pm on May 8, 2008

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

    6. Braden at 7:55pm on May 14, 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 at 10:00am on July 27, 2008

    Thanks for the tip :)

    8. Vlad at 12:25pm on September 2, 2008

    Thank you!

    9. LaPeGa at 2:51pm on November 26, 2008

    Thanxxx

    10. Ramiro at 4:06pm on March 6, 2009

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

    11. zoltantoth at 4:59pm on May 10, 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 at 3:38am on August 30, 2010

    that was great tip - thanks

    Commenting is now closed. Come find me on Twitter.