如何通过javascript检查是否存在查询字符串值

mrb*_*lah 81 javascript

如何使用javascript/jquery检查查询字符串中是否包含aq =?

Gum*_*mbo 105

您还可以使用正则表达式:

/[?&]q=/.test(location.search)
Run Code Online (Sandbox Code Playgroud)

  • 只是为了澄清,这很好用`if(/ [?&] q = /.test(location.search)){alert("match"); }(由于@DragosDurlut评论,我有点困惑.:) (8认同)
  • 关于正则表达式,尤达会说:“它们的代码更短......更容易阅读,但它们并不是”。 (2认同)

Lor*_*nVS 91

var field = 'q';
var url = window.location.href;
if(url.indexOf('?' + field + '=') != -1)
    return true;
else if(url.indexOf('&' + field + '=') != -1)
    return true;
return false
Run Code Online (Sandbox Code Playgroud)

  • 多个返回路径是个人选择,我使用它们是因为我认为它们会导致更清晰的代码,因为它们可以帮助我避免嵌套的if语句并准确显示代码中某个特定点的内容.至于stict案例,左手边和右手边都将是数字,那么切换到严格的相等运算符会有什么不同呢? (7认同)
  • 清洁代码?...为什么不直接返回indexOf测试,而不是将它放在一个完全无用的初步IF语句中. (4认同)
  • 我同意JP.您可能已经编写了正确的解决方案,但您的代码实际上很草率.你在哪里花括号?您应该阅读"好的部件",其中编写没有花括号的样式的代码已被证明在某些条件下会失败并在维护期间产生混淆. (4认同)
  • 我认为url.indexOf(field +'=')!= -1就足够了。不管是不是开头 (2认同)
  • @yyy 不,不是。如果你有一个像 `?kodiaq=1` 这样的查询字符串,那么调用 `url.indexOf('q=')` 而不用 `&` 或 `?` 作为前缀会让你相信 `q` 参数是展示。 (2认同)

Dam*_*che 19

使用URL:

url = new URL(window.location.href);

if (url.searchParams.get('test')) {

}
Run Code Online (Sandbox Code Playgroud)

编辑:如果你对兼容性感到难过,我强烈建议https://github.com/medialize/URI.js/.

  • 很好,但没有IE支持. (3认同)

Pla*_*tta 9

在现代浏览器中,多亏了URLSearchParams界面,这变得容易多了。这定义了许多实用方法来处理 URL 的查询字符串。

假设我们的 URL 是https://example.com/?product=shirt&color=blue&newuser&size=m,您可以使用window.location.search以下方法获取查询字符串:

const queryString = window.location.search;
console.log(queryString);
// ?product=shirt&color=blue&newuser&size=m
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用URLSearchParams以下方法解析查询字符串的参数:

const urlParams = new URLSearchParams(queryString);
Run Code Online (Sandbox Code Playgroud)

然后你可以在结果上调用它的任何方法。

例如,URLSearchParams.get()将返回与给定搜索参数关联的第一个值:

const product = urlParams.get('product')
console.log(product);
// shirt

const color = urlParams.get('color')
console.log(color);
// blue

const newUser = urlParams.get('newuser')
console.log(newUser);
// empty string
Run Code Online (Sandbox Code Playgroud)

您可以使用URLSearchParams.has()检查某个参数是否存在:

console.log(urlParams.has('product'));
// true

console.log(urlParams.has('paymentmethod'));
// false
Run Code Online (Sandbox Code Playgroud)

如需进一步阅读,请点击此处


Pet*_*erg 8

简单的javascript代码示例直接回答您的问题:

return location.search.indexOf('q=')>=0;
Run Code Online (Sandbox Code Playgroud)

普通的javascript代码示例,它尝试查找q参数是否存在以及是否具有值:

var queryString=location.search;
var params=queryString.substring(1).split('&');
for(var i=0; i<params.length; i++){
    var pair=params[i].split('=');
    if(decodeURIComponent(pair[0])=='q' && pair[1])
        return true;
}
return false;
Run Code Online (Sandbox Code Playgroud)

  • 对于`fooq = bar`,第一个示例将返回true (7认同)
  • downvoted,请参阅@ mickadoo的评论 (3认同)

Hum*_*jät 5

另一种变体,但与Gumbos解决方案几乎相同:

var isDebug = function(){
    return window.location.href.search("[?&]debug=") != -1;
};
Run Code Online (Sandbox Code Playgroud)