Ajax封装

185 阅读1分钟

需要考虑Success、Error、Done


 (function($){
        // 备份jquery的ajax方法
        var _ajax = $.ajax;
        // 重写jquery的ajax方法
        $.ajax = function(opt) {
            var dtd = $.Deferred();
            // 备份opt中error和success方法
            var fn = {
                error: function(XMLHttpRequest, textStatus, errorThrown){},
                success: function(data, textStatus, XMLHttpRequest){}
            }
            if(opt.error) {
                fn.error = opt.error;
            }
            if(opt.success) {
                fn.success = opt.success;
            }
            // 扩展增强处理
            var _opt = $.extend(opt, {
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    // 错误方法增强处理
                    // 拦截处理

                    fn.error(XMLHttpRequest, textStatus, errorThrown);
                },
                success: function(data, textStatus, XMLHttpRequest) {
                    // 成功回调方法增强处理
                    // 拦截处理

                    fn.success(data, textStatus, XMLHttpRequest);
                }
            });
            _ajax(_opt).done(function(data) {
                // 拦截处理

                dtd.resolve(data)
            });

            return dtd.promise();
        };
    })(jQuery);

````