2010-11-17 28 views
4

所以我有一個叫做A.html的html頁面,它被稱爲B.htmlA.html?varString="bla-bla-bla"發送args到JS是否正確?如何解析JS的參數?如何閱讀使用Javascript獲取請求?

(不使用如jQuery任何框架,在IE6工作,火狐3)

+0

可能。 [我如何在JavaScript中獲取查詢字符串值?]的副本(http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript) – 2016-01-03 04:34:11

回答

6

這是一個解析查詢字符串的函數。傳遞參數名稱並返回值。

function getQueryVariable(variable) 
{ 
    var query = window.location.search.substring(1); 
    var vars = query.split("&"); 
    for (var i=0;i<vars.length;i++) 
    { 
    var pair = vars[i].split("="); 
    if (pair[0] == variable) 
    { 
     return pair[1]; 
    } 
    } 
    return -1; //not found 
} 
6

使用location.search

alert(location.search); // will display everything from the ? onwards 

你可能想在不同的變量從查詢字符串中分離出來,這樣就可以訪問他們的名字:

var request = {}; 
var pairs = location.search.substring(1).split('&'); 
for (var i = 0; i < pairs.length; i++) { 
    var pair = pairs[i].split('='); 
    request[pair[0]] = pair[1]; 
} 

然後你就可以像request['varString']訪問它,這會給你"bla-bla-bla"

1

晴你想處理傳遞給服務器端的頁面的參數,但如果你有你的理由,爲什麼這樣做客戶端,這裏有一個小腳本,我發現:

function gup(name) 
{ 
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
    var regexS = "[\\?&]"+name+"=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(window.location.href); 
    if(results == null) 
     return ""; 
    else 
     return results[1]; 
} 

我沒有測試它,但我很確定它會去工作。

只需使用它:gup('parameter')它會爲您返回參數值。

0

要通過解析JS查詢字符串,您可以查看使用類似

function getQueryValue(param) { 
     var queryStringArray = querystring && querystring.substring(1).split("&"); 
     for (var i=0, length = queryStringArray.length; i < length; i++) { 
      var token = queryStringArray[i], 
       firstPart = token && token.substring(0, token.indexOf("=")); 
      if (firstPart === param) { 
       return token.substring(token.indexOf("=") + 1, token.length); 
      } 
     } 
} 

例如給定一個URL「http://domain.com.au?aaa=bbb」,你可以將這個fn命名爲getQeuryValue(「aaa」),你會得到「bbb」

我上傳了這段代碼Gist 。修改爲與模塊模式來兼容)

0

由於新URLSearchParams接口,它變得更加容易:

var url = new URL("https://example.org/?foo=bar&foo2=bar2"); 
var params = url.searchParams; 

// Access to a variable 
console.log(params.get("foo")); 

// Loop over params 
for (var key of params.keys()) { 
    console.log(params.get(key)); 
} 

您應該檢查Mozilla Developer Network對瀏覽器的兼容性,因爲它是一個新的API