`

ajax 一次请求

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

 

 

 

 

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

 

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

 

 

[html] view plaincopy
 
  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

 
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics