避免重复的ajax请求

注册一个典型使用$.ajaxPrefilter()的预过滤器,看起来像这样:

[javascript]  view plain copy
  1. $.ajaxPrefilter( function( options, originalOptions, jqXHR ) {  
  2.   // Modify options, control originalOptions, store jqXHR, etc  
  3. });  

以下的情况下:

  • options 是请求的选项
  • originalOptions 值作为提供给Ajax方法未经修改的选项,因此,没有ajaxSettings设置中的默认值
  • jqXHR 是请求的jqXHR对象

当自定义选项,需要提前处理,预过滤器(Prefilters)是一个完美的选择。给定下面的代码, 例如,如果自定义abortOnRetry选项被设置为true,那么调用$.ajax()会自动中止请求相同的URL:

[javascript]  view plain copy
  1. var currentRequests = {};  
  2.    
  3. $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {  
  4.   if ( options.abortOnRetry ) {<span style="color:#cc0000;">//发现这个判断好像没什么卵用</span>  
  5.     if ( currentRequests[ options.url ] ) {  
  6.       currentRequests[ options.url ].abort();  
  7.     }  
  8.     currentRequests[ options.url ] = jqXHR;  
  9.   }  
  10. });  
[javascript]  view plain copy
  1. 直接改写了一下:  
[javascript]  view plain copy
  1. <pre name="code" class="javascript">     
  2.     $.ajaxPrefilter(function( options, originalOptions, jqXHR ) {  
  3.          var key = options.url;  
  4.           if(!currentRequests[key]){  
  5.               currentRequests[key]=jqXHR;  
  6.           }else{  
  7.               jqXHR.abort();//放弃后触发的提交  
  8. //            currentRequests[key].abort();//放弃之前触发的提交  
  9.           }  
  10.     });  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值