2011-03-03 45 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