Как проверить, присутствует ли значение строки запроса через JavaScript

Как я могу проверить, содержит ли строка запроса q =, используя javascript / jquery?

Ответы на вопрос(9)

Решение Вопроса
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
 yyy07 окт. 2011 г., 20:30
url.indexOf (field + '=')! = -1 было достаточно, я думаю. Неважно, если это в начале или нет
 LorenVS22 авг. 2009 г., 00:17
Множественные пути возврата - это личный выбор, я использую их, потому что я думаю, что они ведут к более чистому коду, поскольку они помогают мне избежать вложенных операторов if и точно показывают, что происходит в определенной точке кода. Что касается случаев с ограничениями, то и левая, и правая части всегда будут числами, так что будет иметь значение при переходе на операторы строгого равенства?
 James22 авг. 2009 г., 01:09
Более чистый код? ... Почему бы просто не вернуть тест indexOf вместо того, чтобы поместить его в совершенно бесполезный предварительный оператор IF.
 Matthew Lock28 окт. 2009 г., 02:47
Иногда приложения cgi, такие как perl, используют точку с запятой (;) вместо амперсанда в качестве параметра (который действителен в спецификации http). Вам нужно использовать [&;] там, где вы использовали &
 austin cheney22 авг. 2009 г., 10:12
Я согласен с J-P. Возможно, вы написали правильное решение, но ваш код действительно небрежный. Где вы фигурные скобки? Вам следует прочитать «Хорошие части», в которых код, написанный в стиле без фигурных скобок, оказался неудачным при определенных условиях и приводит к путанице при обслуживании.

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

Попробуй это

//field "search";
var pattern = /[?&]search=/;
var URL = location.search;

if(pattern.test(URL))
{
    alert("Found :)");
}else{
    alert("Not found!");
}

JSFiddle:https://jsfiddle.net/codemirror/zj4qyao2/

С помощьюURL:

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

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

}

РЕДАКТИРОВАТЬ: если вам грустно о совместимости, я настоятельно рекомендуюhttps://github.com/medialize/URI.js/.

 Damien Roche28 июн. 2018 г., 04:56
К сожалению, @UpTheCreek выглядит так. Мне пришлось выключить его для совместимой версии. Мы можем мечтать.
 UpTheCreek26 июн. 2018 г., 11:56
Хорошо, но нет поддержки IE.

Это должно помочь:

function getQueryParams(){
    try{
        url = window.location.href;
        query_str = url.substr(url.indexOf('?')+1, url.length-1);
        r_params = query_str.split('&');
        params = {}
        for( i in r_params){
            param = r_params[i].split('=');
            params[ param[0] ] = param[1];
        }
        return params;
    }
    catch(e){
       return {};
    }
}

эта функция поможет вам получить параметр из URL в JS

function getQuery(q) {
    return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1];
}

который буквально отвечает на ваш вопрос:

return location.search.indexOf('q=')>=0;

Пример простого кода 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;
 Sgnl12 мая 2018 г., 01:13
ниже, смотрите комментарий @ mickadoo
 mickadoo15 мар. 2017 г., 10:03
Первый пример вернет true дляfooq=bar

Я использовалэта библиотека до этого довольно хорошо справляется со своей задачей. В частности: -

qs.contains(name)
    Returns true if the querystring has a parameter name, else false.

    if (qs2.contains("name1")){ alert(qs2.get("name1"));}

Вы также можете использовать регулярное выражение:

/[?&]q=/.test(location.search)
 Leia24 апр. 2017 г., 06:24
Просто чтобы уточнить, это прекрасно работаетif(/[?&]q=/.test(location.search)) { alert("match"); } (Я был немного смущен из-за комментария @DragosDurlut. :)
 Dragos Durlut10 окт. 2012 г., 12:29
на самом деле это будет выглядеть примерно так: if (! new RegExp ("[? &] hfPageToken ="). test (s.data)) // // если данные hfPageToken еще не присутствуют в запросе {s.data = s.data ? [s.data, tokenParam] .join ("&"): tokenParam; }

Ваш ответ на вопрос