?
?
?
?
原始是每次切換一次選項都會發起請求,這樣會降低效率,我們可以將請求后的數據保存下來,然后下次根據請求地址直接獲得請求內容,這樣同url每次只需請求一次。
?
為此專門寫一個JQ插件來做這件事就很有必要。插件具體內容:
?
?
- (function($){??
- ????//存放請求過的地址??
- ????var? _request_list ?=? Array ();??
- ???? jQuery.ajaxOnce ?=? function (options){??
- ????????//與jquery?ajax參數保持一致??
- ????????var? settings ?=?{??
- ????????????type:?"POST",??
- ????????????url:?"",??
- ????????????data:?"",??
- ????????????cache:?true,??
- ????????????async:?true,??
- ????????????success:?""??
- ????????}??
- ????????if(options){??
- ????????????jQuery.extend(settings,options);??
- ????????}??
- ????????//回調??
- ????????var? _successfun ?=? settings .success;??
- ????????//驗證是否已請求??
- ????????var? _msg ?=? validReq (settings.url);??
- ????????if(_msg){??
- ????????????if(typeof? _successfun ?==?"function"){??
- ????????????????_successfun(_msg);??
- ????????????}??
- ????????}else{??
- ????????????//執行ajax請求??
- ????????????jQuery.ajax({??
- ????????????????type:?settings.type,??
- ????????????????url:?settings.url,??
- ????????????????data:?settings.data,??
- ????????????????cache:?settings.cache,??
- ????????????????async:?settings.async,??
- ????????????????success:?function(msg){??
- ????????????????????addContent(settings.url,msg);??
- ????????????????????if(typeof? _successfun ?==?"function"){??
- ????????????????????????_successfun(msg);??
- ????????????????????}??
- ????????????????}??
- ????????????})??
- ????????}??
- ??????????
- ????????//檢查請求是否存在??
- ????????function?validReq($parm_url){??
- ????????????for($ _i ?=? 0 ;$_i? < ? _request_list.length ;?$_i++){??
- ????????????????if(_request_list[$_i]['url']?==?$parm_url){??
- ????????????????????return?_request_list[$_i]['content'];??
- ????????????????}??
- ????????????}??
- ????????????return?false;??
- ????????}??
- ??????????
- ????????//添加指定url內容??
- ????????function?addContent($parm_url,$param_content){??
- ???????????? _combin ?=? Array ();??
- ????????????_combin['url']?=?$parm_url;??
- ????????????_combin['content']?=?$param_content;??
- ????????????_request_list.push(_combin);??
- ????????}??
- ????}??
- })(jQuery)??
?
?
?
我只是將JQ自帶的AJAX函數封裝了下,具體調用和原來調用AJAX是一樣的,只不過調用方式由jQuery.ajax換成了jQuery.ajaxOnce。
?
后續:
如果需要將數據長時間保存,可以利用本地存儲將數據保存至本地,網上開源程序APC.js專門用來處理這種需求,并合理地利用不同瀏覽器的特性,詳細內容: http://vquickphp.com/?a=blogview&id=33
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
