使用jQuery Ajax功能的时候需要注意的一个问题
2013-08-14 11:46
671 查看
每次jquery的Ajax请求都会创建一个xmlHttprequest对象,理论上讲,长连接(页面需要和服务器保持长连接,而且在连接超时后需要重新请求连接)的请求是一个无限递归,请求数量是非常大的,但是由于每次请求都会建立一个新的xmlhttprequest,而且jquery不会自动回收资源,所以导致了内存溢出。
通过查看jquery API,发现jquery还有一个 complete对象,是请求完成后回调函数 (请求成功或失败之后均调用)。 同时有两个参数XMLHttpRequest, textStatus。所以,我们只需要在请求完成后,将传回的XMLHttprequest对象手工回收即可,代码如下:
我们可以重写ajax:
这样写的目的就是增强,作用:可以提高用户体验,可以统一处理ajax返回的服务端错误。
通过查看jquery API,发现jquery还有一个 complete对象,是请求完成后回调函数 (请求成功或失败之后均调用)。 同时有两个参数XMLHttpRequest, textStatus。所以,我们只需要在请求完成后,将传回的XMLHttprequest对象手工回收即可,代码如下:
$.ajax({ url: "http://www.aizr.net", data: { name: "xxxx" }, dataType: "xml", success: function (data, textStatus) { //do something... }, complete: function (XHR, TS) { XHR = null } });
我们可以重写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);
这样写的目的就是增强,作用:可以提高用户体验,可以统一处理ajax返回的服务端错误。
相关文章推荐
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 《转》使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能的时候需要注意的一个问题
- 使用jQuery Ajax功能时需要注意的一个问题(内存溢出)
- SqlServer中使用Select语句给变量赋值的时候需要注意的一个问题
- 使用tableViewController时候需要注意的一个问题
- 1 开发一个注重性能的JDBC应用程序不是一件容易的事. 当你的代码运行很慢的时候JDBC驱动程序并不会抛出异常告诉你。 本系列的性能提示将为改善JDBC应用程序的性能介绍一些基本的指导原则,这其中的原则已经被许多现有的JDBC应用程序编译运行并验证过。 这些指导原则包括: 正确的使用数据库MetaData方法 只获取需要的数据 选用最佳性能的功能 管理连
- 使用Excel2007去重复功能时要注意的一个问题
- nth-of-type在选择class的时候需要注意的一个小问题
- 使用subprocess的时候需要注意的问题
- 使用scanf和fgets需要注意的一个小问题
- 使用maven的maven-shade-plugin插件时需要注意的一个问题
- python默认的是17位小数的精度,但是这里有一个问题,就是当我们的计算需要使用更高的精度(超过17位小数)的时候该怎么做呢?
- 使用Excel2007去反复功能时要注意的一个问题