the Future of the Web
  • Home
  • Hire Us
  • Articles
  • About
  • Contact
  • Hidden Ajax Errors with jQuery

    Jul 5 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.

    Tags: javascript jquery ajax
    View 5 Comments | Add a comment
  • Comments

    1. Jörn Zaefferer at 2:25pm 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 7:25am on July 11, 2007

    like the jquery.

    3. jonnix at 9: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 9:25am on April 2, 2008

    I used similar way, put creating a separate function.

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

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

    Add a Comment

    Note: HTML tags and entities will be converted so that they are displayed as you type them. This means if you type in <em>, people will see <em>, and if you type &lt;em&gt;, people will see &lt;em&gt;.

  • Request a Quote

  • Jesse Skinner

    Jesse Skinner
    • Hire Me
    • About Me
    • Email Me
    • RSS Feed RSS Icon
  • Recent Articles

    • Parse Accept-Language to detect a user's language
    • Twitter
    • Three years of The Future of the Web
    • Saving data to a file with PHP
    • Easy web scraping with PHP
    • See all the articles
    • IBM: Where and when to use Ajax
    • Code Igniter 1.6.0 Released
    • Update a Dev Site Automatically with Subversion
    • JavaScript Functions are Variables
    • See All...
  • Categories

    • javascript (37)
    • links (19)
    • about (18)
    • web (14)
    • server (10)
    • html (10)
    • css (8)
    • carnival (7)
    • browsers (7)
    • design (4)
    • seo (4)
    • ads (4)
    • standards (4)
    • events (4)
    • work (4)
  • Older Articles

    • May 2008
    • April 2008
    • February 2008
    • January 2008
    • December 2007
    • November 2007
    • September 2007
    • August 2007
    • July 2007
    • June 2007
    • May 2007
    • April 2007
    • March 2007
    • February 2007
    • January 2007
    • December 2006
    • November 2006
    • October 2006
    • September 2006
    • August 2006
    • July 2006
    • June 2006
    • May 2006
    • April 2006
    • March 2006
    • February 2006
    • January 2006
    • December 2005
    • November 2005
    • October 2005
    • September 2005
    • August 2005
    • April 2005
    • See All...
Copyright © 2008 Jesse Skinner | CSS | XHTML | RSS | Help | Impressum | Cutie Quilts | Internet Blog Top Sites