js-獲取url參數值

今天碰到要在一個頁面獲取另外一個頁面url傳過來的參數,一開始很本能的想到了用 split(「?」)這樣一步步的分解出需要的參數。

喜歡的朋友可以測試下,希望對大家有所幫助!


js方法一:正則分析法,指定參數名獲取值。

function getQueryString(name){

var reg =new RegExp('(^|&)'+name+'=([^&]*)(&|$)','i');

var r = window.location.search.substr(1).match(reg);

if(r !=null){

return unescape(r[2]);

}

return null;

Advertisements

}

// 這樣調用:

// http://orzhtml.github.io?a=1&b=2&c=3

console.log(getQueryString("a"));

console.log(getQueryString("b"));

console.log(getQueryString("c"));

結果截圖:

下面舉一個例子:

若地址欄URL為:abc.html?id=123&url=http://orzhtml.github.io

那麼,但你用上面的方法去調用:alert(getQueryString("url"));

則會彈出一個對話框:內容就是 http://orzhtml.github.io

Advertisements

如果用:alert(getQueryString("id"));那麼彈出的內容就是 123 啦;

當然如果你沒有傳參數的話,比如你的地址是 abc.html 後面沒有參數,那強行輸出調用結果有的時候會報錯:

所以我們要加一個判斷 ,判斷我們請求的參數是否為空,首先把值賦給一個變數:

var myurl= getQueryString("url");

if(myurl != null && myurl.toString().length>1) {

alert(myurl);

}


js方法二:獲取所有參數這樣就不會報錯了,結果返回始終會是一個對象!

function GetRequest(){

var url = location.search;//獲取url中"?"符后的字串

var theRequest ={};

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;

}

// 這樣調用

// http://orzhtml.github.io?a=4&b=5&c=6

var Request = {};

Request = GetRequest();

console.log(Request);

console.log(Request['a']);

console.log(Request['b']);

console.log(Request['c']);

結果截圖:


本文內容均屬個人原創作品,轉載此文章須附上出處及原文鏈接。

加關注,定時推送,互動精彩多,若你有更好的見解,歡迎留言探討!

Advertisements

你可能會喜歡