0

可能重复:
在 JavaScript 中获取查询字符串值

说如果,我有一个类似这个更新 测试的 URL

我想检查 URL 是否有参数 q。

我可以使用 $get() 来做到这一点。

If(urlparamerter == q)
{

   do some thing

}

是否有任何 jquery 内置函数可以做到这一点?

提前致谢!

4

3 回答 3

3

不,没有 jQuery 内置函数可以做到这一点。您可以使用从这个SO 答案中找到的以下功能

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')

工作小提琴

于 2012-05-21T06:09:13.960 回答
1

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

var q = $.url().param("q"); // Gets the q parameter
于 2012-05-21T06:10:59.563 回答
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); ?>;

这个答案来自这个线程

于 2012-05-21T06:08:36.757 回答