ajax 一次请求

在网站开发中经常会用到ajax,从执行效率上应该注意一些问题。例如:

 

 

 

 

原始是每次切换一次选项都会发起请求,这样会降低效率,我们可以将请求后的数据保存下来,然后下次根据请求地址直接获得请求内容,这样同url每次只需请求一次。

 

为此专门写一个JQ插件来做这件事就很有必要。插件具体内容:

 

 

[html]  view plain copy
 
  1. (function($){  
  2.     //存放請求過的地址  
  3.     var _request_list = Array();  
  4.     jQuery.ajaxOnce = function(options){  
  5.         //與jquery ajax參數保持一致  
  6.         var settings = {  
  7.             type: "POST",  
  8.             url: "",  
  9.             data: "",  
  10.             cache: true,  
  11.             async: true,  
  12.             success: ""  
  13.         }  
  14.         if(options){  
  15.             jQuery.extend(settings,options);  
  16.         }  
  17.         //回調  
  18.         var _successfun = settings.success;  
  19.         //驗證是否已請求  
  20.         var _msg = validReq(settings.url);  
  21.         if(_msg){  
  22.             if(typeof _successfun == "function"){  
  23.                 _successfun(_msg);  
  24.             }  
  25.         }else{  
  26.             //執行ajax請求  
  27.             jQuery.ajax({  
  28.                 type: settings.type,  
  29.                 url: settings.url,  
  30.                 data: settings.data,  
  31.                 cache: settings.cache,  
  32.                 async: settings.async,  
  33.                 success: function(msg){  
  34.                     addContent(settings.url,msg);  
  35.                     if(typeof _successfun == "function"){  
  36.                         _successfun(msg);  
  37.                     }  
  38.                 }  
  39.             })  
  40.         }  
  41.           
  42.         //檢查請求是否存在  
  43.         function validReq($parm_url){  
  44.             for($_i = 0;$_i < _request_list.length; $_i++){  
  45.                 if(_request_list[$_i]['url'] == $parm_url){  
  46.                     return _request_list[$_i]['content'];  
  47.                 }  
  48.             }  
  49.             return false;  
  50.         }  
  51.           
  52.         //添加指定url內容  
  53.         function addContent($parm_url,$param_content){  
  54.             _combin = Array();  
  55.             _combin['url'] = $parm_url;  
  56.             _combin['content'] = $param_content;  
  57.             _request_list.push(_combin);  
  58.         }  
  59.     }  
  60. })(jQuery)  

 

 

 

我只是将JQ自带的AJAX函数封装了下,具体调用和原来调用AJAX是一样的,只不过调用方式由jQuery.ajax换成了jQuery.ajaxOnce。

 

后续:

如果需要将数据长时间保存,可以利用本地存储将数据保存至本地,网上开源程序APC.js专门用来处理这种需求,并合理地利用不同浏览器的特性,详细内容:http://vquickphp.com/?a=blogview&id=33

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值