2011-03-03 46 views

回答

1
var myURL = 'http://www.example.com/index.php?q=test&=Go'; 

    function gup(name) //stands for get url param 
     { 
      name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]"); 
      var regexS = "[\\?&]"+name+"=([^&#]*)"; 
      var regex = new RegExp(regexS); 
      var results = regex.exec(myURL); 
      if(results == null) 
      return ""; 
      else 
      return results[1]; 
     } 


     var my_param = gup('q'); 

這裏是jsfiddle

或者你也可以使用jQuery的插件:

URL Parser JQuery

+1

對於此功能的改進版本,請參閱http://stackoverflow.com/questions/901115/get-querystring-values-with-jquery/5158301#5158301 – James 2011-03-03 02:54:28

4
var m = window.location.search.match(/q=([^&]*)/); 

if (m) { 
    alert(m[1]); // => alerts "test" 
} 
+0

+1確實是改進版本 – kjy112 2011-03-03 03:00:55

+0

這不起作用if有以q結尾的參數,例如'?iq = 120&q = steve'將返回iq值而不是q值。 – spb 2011-10-28 20:30:44

+1

@spb,好點!我猜'/(?:\?|&)q =([^&] *)/'會更穩健。 – James 2011-10-30 16:11:42

0

如果你只是想在第一項的值,那麼:

function getFirstSeachValue() { 
    var s = window.location.search.split('&'); 
    return s[0].split('=')[1]; 
} 

如果您希望'q'項的值(不管它在搜索字符串中的位置),則以下內容將返回傳遞的項的值,如果該項不在搜索字符串中,則返回null:

function getSearchValue(value) { 
    var a = window.location.search.replace(/^\?/,'').split('&'); 
    var re = new RegExp('^' + value + '='); 
    var i = a.length; 
    while (i--) { 
    if (re.test(a[i])) return a[i].split('=')[1]; 
    } 
    return null; 
} 

這兩個都只是一些例子,應該一路測試結果以防止出現意外錯誤。

-- 
Rob