Skip to content Skip to sidebar Skip to footer

How To Get Default Error Of Ajax Call

Ok, what I am trying to do is alerting ajax errors according to its error codes and I have lots of ajax calls on website so I am using global ajax error handler function. But what

Solution 1:

Yes you can, but you have to override jQuery default $.ajax methods. Check the following code that I used in one of my projects. Make sure you load the script just after jQuery.

My scenario was -

  1. The web site had a lot of ajax partial views which had to check whether user is logged in or not. So I had to override jquery calls to check for it.

  2. I also had to show a loader when any ajax call was made.

  3. One more thing, some js are loaded by ajax, so I added a check whether the url is a .js file or normal url.

I have taken out the sensitive codes that were confidential for my project. The rest is here. This might help you.

$(document).ready(function () {
    var oldjQuery = [];
    oldjQuery["ajax"] = $.ajax;
    oldjQuery["load"] = $.load;
    var newOptions = [];
    //override ajax
    jQuery.ajax = function (options) {
        newOptions["ajax"] = $.extend({}, options);
            //override the success callback
            newOptions["ajax"].success = function (data, textStatus, jqXhr) {
                try {
                    if (options.url.indexOf('.js') <= -1) {
                        //this is a normal success call, do nothing
                    }
                }
                catch (err) {
                         //... my other codes, incase any error occurred
                }

                if (typeof options.success != 'undefined') { 
                        //the ajax call has a success method specified, so call it
                        options.success(data, textStatus, jqXhr);
                    }
            };

            //override the error callback
            newOptions["ajax"].error = function (jqXhr, textStatus, errorThrown) {
                try {
                    if (options.url.indexOf('.js') <= -1) {
                    //this is a normal success call, do nothing
                    }
                }catch (y) {
                    //... my other codes, incase any error occurred
                }

                //the ajax call has an error method specified, so call it
                if (typeof options.error != 'undefined') {
                    options.error(jqXhr, textStatus, errorThrown);
                }
            };

            return oldjQuery["ajax"](newOptions["ajax"]);
        };

        //override load function
    jQuery.load = function (url, data, completeCallback, ignore) {
        newOptions["load"].completeCallback = function (d, textStatus, jqXhr) {
            try {
                if (url.indexOf('.js') <= -1) {
                    //codes
                }
            } catch (err) {
                try {
                    //codes
                }catch (err2) {
                }
            }

            if (typeof completeCallback != 'undefined') {
                    //call the default completed callback
                    completeCallback(d, textStatus, jqXhr);
                }
            };

            return oldjQuery["load"](url, data, newOptions["load"].completeCallback);
        };
});

Post a Comment for "How To Get Default Error Of Ajax Call"