|
最近遇到一個案子需要使用javascript來抓取網址的參數和值來做判斷,但如何利用javascript抓取參數呢?
原著倒是沒試過,於是就上網查了js相關範例,並改寫成符合自已需求的判斷式,以後需要就可以直接取用囉。
舉例來說www.domain.com/index.php?a=1&b=2&c=3,想要取得b是多少,或許在php及asp中要抓取url參數很簡單,但是javascript無類似的函數可以使用,所以只能透過window.location.toString()取得整串網址,再透過split()分割字串取得"?"右邊的url,即a=1&b=2&c=3。
接下來的重點是要從中取得b等多少,首先利用split()以"&"做分割得到3組字串"a=1,b=2,c=3〃並存成陣列,再用for迴圈配合split()去分割"="左右的字串,取得等號左邊的數是否等於b,若等於b則重新切割"b=2〃的字串去取得"="右邊的字,即2。
若是參數的值是中文,如:"b=台北",那麼抓出來的"台北"會變成亂碼,還必需使用decodeURI()將亂碼轉換回中文。
若想要利用javascript取得url參數和值,就算網址有很多參數,都可以用split()切字+for迴圈的方式自動找出你要的結果囉~- <script type="text/javascript">
- var url=window.location.toString(); //取得當前網址
- var str=""; //參數中等號左邊的值
- var str_value=""; //參數中等號右邊的值
- if(url.indexOf("?")!=-1){
- //如果網址有"?"符號
- var ary=url.split("?")[1].split("&");
- //取得"?"右邊網址後利用"&"分割字串存入ary陣列 ["a=1","b=2","c=3"]
- for(var i in ary){
- //取得陣列長度去跑迴圈,如:網址有三個參數,則會跑三次
- str=ary[i].split("=")[0];
- //取得參數"="左邊的值存入str變數中
- if (str == "b") {
- //若str等於想要抓取參數 如:b
- str_value = decodeURI(ary[i].split("=")[1]);
- //取得b等號右邊的值並經過中文轉碼後存入str_value
- }
- }
- }
- alert(str_value); //顯示參數的值
- </script>
複製代碼 原文出處:SEO知識家 http://www.yes-seo.tw/2011/04/javascript-get-url/ |
|