【发布时间】:2012-05-21 06:05:35
【问题描述】:
如果我有这样的网址 更新 test
我想检查 URL 是否有参数 q。
我可以使用 $get() 来执行此操作吗?
If(urlparamerter == q)
{
do some thing
}
是否有任何 jquery 内置函数可以做到这一点?
提前致谢!
【问题讨论】:
标签: jquery url query-string
如果我有这样的网址 更新 test
我想检查 URL 是否有参数 q。
我可以使用 $get() 来执行此操作吗?
If(urlparamerter == q)
{
do some thing
}
是否有任何 jquery 内置函数可以做到这一点?
提前致谢!
【问题讨论】:
标签: jquery url query-string
不,没有 jQuery 内置函数可以做到这一点。您可以使用以下函数,从这个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')
【讨论】:
我鼓励您查看 jQuery URL Parser 插件。这是与 url 和 queryString 数据交互的一种非常直接的方式:
var q = $.url().param("q"); // Gets the q parameter
【讨论】:
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。
【讨论】: