¿Cómo puedo verificar si la cadena de consulta contiene un q=
en ella usando JavaScript o jQuery?
javascript
mrblah
fuente
fuente
var url = new URLSearchParams(location.search); url.has("my_great_query");
devuelvetrue
si esa cadena de consulta está en su URL. A continuación, puede obtener su valor conurl.get("my_great_query");
.Respuestas:
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
fuente
?kodiaq=1
, entonces llamarurl.indexOf('q=')
sin prefijarla con&
o le?
haría creer que elq
parámetro está presente.También puede usar una expresión regular:
fuente
if(/[?&]q=/.test(location.search)) { alert("match"); }
(estaba un poco confundido debido al comentario de @DragosDurlut. :)Usando
URL
:url = new URL(window.location.href); if (url.searchParams.get('test')) { }
EDITAR: si está triste por la compatibilidad, le sugiero https://github.com/medialize/URI.js/ .
fuente
La muestra de código javascript simple que responde a su pregunta literalmente:
return location.search.indexOf('q=')>=0;
La muestra de código javascript simple que intenta encontrar si el parámetro q existe y si tiene un valor:
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;
fuente
fooq=bar
una variante más, pero casi lo mismo que la solución de Gumbos:
var isDebug = function(){ return window.location.href.search("[?&]debug=") != -1; };
fuente
esta función le ayuda a obtener el parámetro de la URL en JS
function getQuery(q) { return (window.location.search.match(new RegExp('[?&]' + q + '=([^&]+)')) || [, null])[1]; }
fuente
Prueba esto
//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/
fuente
En los navegadores modernos, esto se ha vuelto mucho más fácil, gracias a la
URLSearchParams
interfaz. Esto define una serie de métodos de utilidad para trabajar con la cadena de consulta de una URL.Suponiendo que nuestra URL lo sea
https://example.com/?product=shirt&color=blue&newuser&size=m
, puede tomar la cadena de consulta usandowindow.location.search
:const queryString = window.location.search; console.log(queryString); // ?product=shirt&color=blue&newuser&size=m
Luego puede analizar los parámetros de la cadena de consulta usando
URLSearchParams
:const urlParams = new URLSearchParams(queryString);
Luego, puede llamar a cualquiera de sus métodos en el resultado.
Por ejemplo,
URLSearchParams.get()
devolverá el primer valor asociado con el parámetro de búsqueda dado: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
Puede utilizar
URLSearchParams.has()
para comprobar si existe un determinado parámetro:console.log(urlParams.has('product')); // true console.log(urlParams.has('paymentmethod')); // false
Para leer más, haga clic aquí .
fuente
He usado esta biblioteca antes que hace un buen trabajo de lo que buscas. Específicamente:-
qs.contains(name) Returns true if the querystring has a parameter name, else false. if (qs2.contains("name1")){ alert(qs2.get("name1"));}
fuente
Esto debería ayudar:
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 {}; } }
fuente