Jquery获取url参数

时间:2012-05-21 06:05:36

标签: jquery url query-string

  

可能重复:
  Get query string values in JavaScript

说,如果我有这样的网址更新 test

我想检查网址是否有参数q。

我可以使用$ get()来执行此操作。

If(urlparamerter == q)
{

   do some thing

}

是否有任何jquery构建函数来执行此操作?

提前致谢!

3 个答案:

答案 0 :(得分:3)

不,没有jQuery Built in功能来做到这一点。您可以使用以下SO answer

中的功能
function getParameterByName(name) {

    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(window.location.search);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));

}

要获取q参数,只需将其称为

var qvalue = getParameterByName('q');

<强>更新

如果您想通过传递url而不是使用current page's url来使用此功能,请修改如下所示的功能

function getParameterByName(name,url) {

    var match = RegExp('[?&]' + name + '=([^&]*)')
                    .exec(url);

    return match && decodeURIComponent(match[1].replace(/\+/g, ' '));

}

然后你可以像

一样调用它
var qvalue = getParameterByName('q','www.test.com?q=1')

Working Fiddle

答案 1 :(得分:1)

我建议您查看jQuery URL Parser插件。这是一种非常直接的与url和queryString数据交互的方式:

var q = $.url().param("q"); // Gets the q parameter

答案 2 :(得分:0)

对于GET参数,您可以从document.location.search

中获取它们
var $_GET = {};

document.location.search.replace(/\??(?:([^=]+)=([^&]*)&?)/g, function () {
    function decode(s) {
        return decodeURIComponent(s.split("+").join(" "));
    }

    $_GET[decode(arguments[1])] = decode(arguments[2]);
});

document.write($_GET["test"]);

或者,这是一个更通用的版本:

function getQueryParams(qs) {
    qs = qs.split("+").join(" ");
    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])]
            = decodeURIComponent(tokens[2]);
    }

    return params;
}

var $_GET = getQueryParams(document.location.search);

或者,更好的是,使用PHP抓住它们:

var $_GET = <?php echo json_encode($_GET); ?>;

此答案来自this thread