如何检查url查询字符串是否等于javascript(或jquery)的东西



我知道这个问题似乎有点左右,但90%的答案指向一个不适合我的解决方案(indexof>1) .

if ( window.location.href.indexOf("product=3") > -1 || window.location.href.indexOf("product=2") > -1 ) {
alert('success');
}else {
alert('nothing');
}

问题是,对于产品30,这也提醒成功。

是否有一个简单的解决方案可以检测url查询字符串中的精确匹配?

例如

mycoolsite.com/cart/? type = buynow&产品= 30

如果产品等于30,我们如何用javascript或jquery检查?

使用如下:使用jQuery从URL获取querystring

我建议如下:

$(function() {
function getUrlVars(url) {
var vars = {},
hash;
if (url.indexOf("?") < 0) {
return false;
}
var hashes = url.substring(url.indexOf("?") + 1)
$.each(hashes.split("&"), function(i, v) {
hash = v.split('=');
vars[hash[0]] = hash[1];
});
//console.log(url, hashes, vars);
return vars;
}
var queryData;
queryData = getUrlVars(window.location.href + "?buynow&product=3");
console.log(queryData);
queryData = getUrlVars(window.location.href + "?buynow&product=3&product=2");
console.log(queryData);
queryData = getUrlVars(window.location.href + "?buynow&product[]=3&product[]=2");
console.log(queryData);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="result"></div>

这段代码有一些警告。正如您在我的测试中所看到的,如果您有多个项目,如果相同的变量名称或索引,它将覆盖其他值。它也不会读取数组。您可以为此添加一个检查,并编写一个函数来处理数组部分。

如果你的查询哈希总是更基本,这可能工作得很好。

已经使用了Twisty在评论中推荐的这个函数,效果很好。

使用jQuery从URL获取querystring

最新更新