在ajax應用流行時,有時我們可能為了降低服務器的負擔,把動態(tài)內(nèi)容生成靜態(tài)html頁面或者是xml文件,供客戶端訪問!但是在我們的網(wǎng)站或系統(tǒng)中往住頁面中某些部分是在后臺沒有進行修改時,其內(nèi)容不會發(fā)生變化的。但是頁面中也往往有部分內(nèi)容是動態(tài)的更新的,比如一個新聞頁面,新聞內(nèi)容往往生成了之后就是靜態(tài)的,但是新聞的最新評論往往是變化的,在這個時候有幾種解決方案:
1、重新生成該靜態(tài)頁面,優(yōu)點是用戶訪問時頁面上的肉容可以實現(xiàn)全靜態(tài),不與服務器程序及數(shù)據(jù)庫后端打交道!缺點是每次用戶對頁面任何部分更新都必須重新生成。
2、js調(diào)用請求動態(tài)內(nèi)容,優(yōu)點是靜態(tài)頁面只生成一次,動態(tài)部分才動態(tài)加載,卻點是服務器端要用輸出一段js代碼并用js代碼輸出網(wǎng)頁內(nèi)容,也不利于搜索引擎收錄。
3、ajax調(diào)用動態(tài)內(nèi)容,和js基本相似,只是與服務器交互的方式不同!并且頁面顯示不會受到因動態(tài)調(diào)用速度慢而影響整個頁面的加載速度!至于ajax不利于搜索收錄,當然在《ajax
in acation》等相關書籍中也介紹有變向的解決方案!
4、在服務器端ssl動態(tài)內(nèi)容,用服務器端優(yōu)化及緩存解決是時下最流行的方法!
對于第二種和第三種方法都是我最青睞的靜態(tài)解決方法,適合以內(nèi)容為主的中小型網(wǎng)站。那么在有時候可能會有js讀取url參數(shù)的需求,事實證明的確也有很多時候有這種需求,特別是在胖客戶端的情況下!以前也寫過這樣的代碼,其實原理很簡單就是利用javascript接口提供location對像得到url地址,然后通過分析url以取得參數(shù),以下是我收錄的一些優(yōu)秀的url參數(shù)讀取代碼:
一、字符串分割分析法。
這里是一個獲取URL+?帶QUESTRING參數(shù)的JAVASCRIPT客戶端解決方案,相當于asp的request.querystring,PHP的$_GET
函數(shù):
<script> function GetRequest() { var url = location.search; //獲取url中"?"符后的字串 var theRequest = new Object(); if(url.indexOf("?") != -1) { var str = url.substr(1); strs = str.split("&"); for(var i = 0; i < strs.length; i ++) { theRequest[strs[i].split("=")[0]]=unescape(strs[i].split("=")[1]); } } return theRequest; } </script>
|
然后我們通過調(diào)用此函數(shù)獲取對應參數(shù)值:
<script> var Request=new Object(); Request=GetRequest(); var 參數(shù)1,參數(shù)2,參數(shù)3,參數(shù)N; 參數(shù)1=Request['參數(shù)1']; 參數(shù)2=Request['參數(shù)2']; 參數(shù)3=Request['參數(shù)3']; 參數(shù)N=Request['參數(shù)N']; </script> |
以此獲取url串中所帶的同名參數(shù)
二、正則分析法。
function GetQueryString(name) { var reg = new RegExp("(^|&)"+ name +"=([^&]*)(&|$)"); var r = window.location.search.substr(1).match(reg); if (r!=null) return unescape(r[2]); return null; } alert(GetQueryString("參數(shù)名1")); alert(GetQueryString("參數(shù)名2")); alert(GetQueryString("參數(shù)名3")); |