`
扬起风帆
  • 浏览: 117671 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

重写Jquery的$.ajax方法

 
阅读更多
(function($){
	//备份jquery的ajax方法
	var _ajax=$.ajax;
	
	//重写jquery的ajax方法
	$.ajax=function(opt){
		//备份opt中error和success方法
		var fn = {
			error:function(XMLHttpRequest, textStatus, errorThrown){},
			success:function(data, textStatus){}
		}
		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){
				//成功回调方法增强处理
				
				fn.success(data, textStatus);
			}
		});
		_ajax(_opt);
	};
})(jQuery);

 由于闭包函数先于页面上script加载,所以在此可以直接复写$.ajax方法.

分享到:
评论
3 楼 Hope---------- 2017-04-14  
转载的http://blog.csdn.net/qq_16313365/article/details/51078252
2 楼 rogerer 2014-03-05  
_ajax(_opt);  

需要返回,否则在使用$.load的时候会报错:Uncaught TypeError: Cannot call method 'done' of undefined。
return _ajax(_opt);
1 楼 waykingeye 2013-08-14  
不知道楼主有没有重写 其他插件的方法,例如:
			//重写ajaxForm方法
			var _ajaxSubmit = jQuery.fn.ajaxSubmit;
			alert("--"+jQuery(this).attr);
			jQuery.fn.ajaxSubmit = function(opt) {alert(22);
				_ajaxSubmit(opt);
			};
			})(jQuery);

这里远ajaxSubmit方法里面有使用 this.attr
这样重写传递_opt后 this.attr会找不到,猜想是this丢失了  没有给他重写传递,
不知道应该怎么解决呢?

相关推荐

    Ajax全局加载框(Loading效果)的配置

    在Ajax进行后台数据请求的过程中,我们有时候会希望用户能知道页面后台还在做一些事情,这时候就需要给用户一个非常明确的提示,也就是我们所谓的进度条 ...$.ajaxSetup({ beforeSend: function () { //ajax请求之前 }

    重写jquery的ajax

    ajax重写,重写jquery的ajax方法,自动增加加载状态,跨域修改等

    jquery 重写 ajax提交并判断权限后 使用load方法报错解决方法

    var _ajax = $.ajax; // 重写ajax方法,先判断登录在执行success函数 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data,...

    最新jquery.1.8.1

    $.sub:该方法是在jQuery 1.5中引入的,但是被证明不是很有用,将被移到jQuery 1.9兼容性插件中。 全局AJAX事件:一些事件(如ajaxStart)可以被附加到不在一个文档中的任何元素中,这将导致效率低下。在1.9中,...

    jQuery.switchPage.js:基于jQuery的全屏切换插件

    jQuery.switchPage.js 知识点 ...例如 $.Ajax() 、 $.extend() 方法 二、对象级别组件开发:即挂在jQuery原型下的方法,这样通过选择器获取的jQuery对象实例也能共享该方法,也称为动态方法。 $.fn.foo

    ajax 操作全局监测,用户session失效的解决方法

    var _ajax = $.ajax; // 重写ajax方法,先判断登录在执行success函数 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data,...

    最新JQuery版本1.8

    $.sub:该方法是在jQuery 1.5中引入的,但是被证明不是很有用,将被移到jQuery 1.9兼容性插件中。 全局AJAX事件:一些事件(如ajaxStart)可以被附加到不在一个文档中的任何元素中,这将导致效率低下。在1.9中,Ajax...

    jquery插件使用方法大全

    例如,使用了新的jQuery内部Ajax API就可以实现下面的代码了: // Assign handlers immediately after making the request, // and remember the jxhr object for this request var jxhr = $.ajax({ url: "example....

    MingGeJS1.7.3类库

    $.getJSON 或$.ajax 进行测试吧 示例 $.getJSON("http://xxxx?callback=?",function(v){alert(v)});}) --------------------------------------------------------------------------------------------------- ...

    JavaScript/Ajax库jQuery新版本1.4

    1. 常用方法的性能大幅提升。重写了大部分较早期的函数。 2. 更容易使用的设置函数(setter function)。为所有对象新增了许多易用的设置函数。 3. Ajax方面的改进。引入了许多Ajax和JSON处理方面的更新,包括...

    jQuery分页插件jquery.pagination.js使用方法解析

    jquery.pagination.js插件,此jQuery插件为Ajax分页插件,一次性加载全部数据,故分页切换时无刷新与延迟,只是重写指定dom元素中的html内容,如果数据量较大不建议用此方法,因为加载会比较慢; jQuery的多数插件...

    transport.js

    Ajax.call('comment.php', 'cmt=' + $.toJSON(cmt), commentResponse, 'POST', 'JSON'); 2.index.js 里 var res = result.parseJSON(); 替换为 var res = $.evalJSON(result); 以下是修改过的文件: js\...

    jquery 最新版框架下载(1.32-1.8.3)

    jQuery 1.6 版本包括了对属性(Attribute)模型的重要重写,还有诸多性能优化。借此机会感谢jQuery开发团队和jQuery错误分类团队的成员。 jquery1.6.4 此版本较jQuery 1.6.3进行了小幅改进,包括: Data:修复了用“-...

    jQuery EasyUI提交表单验证

    EasyUI的form表单里面的验证框,先讲解下validatebox类和相关的属性。 验证规则 验证规则是通过使用 required 和 validType 特性来定义的, ...要自定义验证规则,重写 $.fn.validatebox.defaults.rules ,来定义一个

    使用jQuery全局事件ajaxStart为特定请求实现提示效果的代码

    首先,重写Ajax方法的代价太高,仍然可以利用jQuery自身的Ajax Events。 Ajax触发的全局事件会像一个标准事件一样传播到所有DOM节点上。层级:jQuery Events > Ajax Events > 自定义Ajax事件。 实现 代码如下: Wo =...

    在JavaScript中重写jQuery对象的方法实例教程

    jQuery是一个款非常优秀的类库,它给我们解决了很多的客户端编程,但是任何东西都不是万能的,当它不能满足我们的需求时我们就需要对它进行重写,同时也不要影响其原有的功能或者修改其原有的功能;比如我现在的web...

    jQuery.form插件的使用及跨域异步上传文件

    我们就不能用这种方式了,我们需要换个思路去干这事,让服务端去重写向我们的客户端,由客户端(与文件上传页面在同域下)来返回相关数据即可。 再做事 1 Jquery.form的使用 <form method=post action=...

    ECShop中transport.js与jQuery冲突

    2.1 注释掉重写object的方法,具体搜索 if ( ! Object.prototype.toJSONString) { 这一段代码,然后把里面的内容全部注释掉。(参考:注释掉496-737行) 2.2 加入新的JSON支持方法 function objToJSONString(obj,...

Global site tag (gtag.js) - Google Analytics