Obtenga el parámetro url jquery O Cómo obtener los valores de cadena de consulta en js

He visto muchos ejemplos de jQuery donde el nombre y el tamaño del parámetro son desconocidos. Mi url solo tendrá 1 cadena:

http://example.com?sent=yes 

Solo quiero detectar:

  1. ¿Existe sent ?
  2. ¿Es igual a “sí”?

La mejor solución aquí .

 var getUrlParameter = function getUrlParameter(sParam) { var sPageURL = decodeURIComponent(window.location.search.substring(1)), sURLVariables = sPageURL.split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : sParameterName[1]; } } }; 

Y así es como puedes usar esta función asumiendo que la URL es,
http://dummy.com/?technology=jquery&blog=jquerybyexample .

 var tech = getUrlParameter('technology'); var blog = getUrlParameter('blog'); 

jQuery fragmento de código para obtener las variables dinámicas almacenadas en la url como parámetros y almacenarlas como variables de JavaScript listas para usar con tus scripts:

 $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); if (results==null){ return null; } else{ return decodeURI(results[1]) || 0; } } 

example.com?param1=name&param2=&id=6

 $.urlParam('param1'); // name $.urlParam('id'); // 6 $.urlParam('param2'); // null 

ejemplo params con espacios

 http://www.jquery4u.com?city=Gold Coast console.log($.urlParam('city')); //output: Gold%20Coast console.log(decodeURIComponent($.urlParam('city'))); //output: Gold Coast 

Solución de 2018

Tenemos: http://example.com?sent=yes

 let searchParams = new URLSearchParams(window.location.search) 

¿Existe envío ?

 searchParams.has('sent') // true 

¿Es igual a “sí”?

 let param = searchParams.get('sent') 

y luego simplemente compararlo.

Siempre pego esto como una línea. Ahora params tiene los vars:

 params={};location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){params[k]=v}) 

multi-alineado:

 var params={}; window.location.search .replace(/[?&]+([^=&]+)=([^&]*)/gi, function(str,key,value) { params[key] = value; } ); 

como una función

 function getSearchParams(k){ var p={}; location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v}) return k?p[k]:p; } 

que puedes usar como:

 getSearchParams() //returns {key1:val1, key2:val2} 

o

 getSearchParams("key1") //returns val1 

Puede ser demasiado tarde Pero este método es muy fácil y simple

     

ACTUALIZAR
Requiere el plugin url: plugins.jquery.com/url
Gracias -Ripounet

O puede usar esta pequeña función ordenada, porque ¿ por qué soluciones demasiado complicadas?

 function getQueryParam(param) { location.search.substr(1) .split("&") .some(function(item) { // returns first occurence and stops return item.split("=")[0] == param && (param = item.split("=")[1]) }) return param } 

que se ve aún mejor cuando se simplifica y se acelera:

tl; dr solución de una línea

 var queryDict = {}; location.search.substr(1).split("&").forEach(function(item) {queryDict[item.split("=")[0]] = item.split("=")[1]}) 
 resultado:
 queryDict ['enviado'] // indefinido o 'valor'

Pero, ¿y si tienes caracteres codificados o claves de valores múltiples ?

Será mejor que veas esta respuesta: ¿cómo puedo obtener valores de cadena de consulta en JavaScript?

Escurrir el bulto

 "?a=1&b=2&c=3&d&e&a=5&a=t%20e%20x%20t&e=http%3A%2F%2Fw3schools.com%2Fmy%20test.asp%3Fname%3Dståle%26car%3Dsaab" > queryDict a: ["1", "5", "text"] b: ["2"] c: ["3"] d: [undefined] e: [undefined, "http://w3schools.com/my test.asp?name=ståle&car=saab"] > queryDict["a"][1] // "5" > queryDict.a[1] // "5" 

Sin embargo, otra función alternativa …

 function param(name) { return (location.search.split(name + '=')[1] || '').split('&')[0]; } 

¿Quizás quieras darle una mirada al dentista JS ? (descargo de responsabilidad: escribí el código)

código:

 document.URL == "http://helloworld.com/quotes?id=1337&author=kelvin&message=hello" var currentURL = document.URL; var params = currentURL.extract(); console.log(params.id); // 1337 console.log(params.author) // "kelvin" console.log(params.message) // "hello" 

con Dentist JS, básicamente puede llamar a la función extract () en todas las cadenas (por ejemplo, document.URL.extract ()) y obtiene un HashMap de todos los parámetros encontrados. También es personalizable para tratar con delimitadores y todo.

Versión reducida <1kb

Este es simple y funcionó para mí

 $.urlParam = function(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } 

entonces, si su url es http://www.yoursite.com?city=4

prueba esto

 console.log($.urlParam('city')); 
 function GetRequestParam(param) { var res = null; try{ var qs = decodeURIComponent(window.location.search.substring(1));//get everything after then '?' in URI var ar = qs.split('&'); $.each(ar, function(a, b){ var kv = b.split('='); if(param === kv[0]){ res = kv[1]; return false;//break loop } }); }catch(e){} return res; } 

Espero que esto sea de ayuda.

   

Existe esta gran biblioteca: https://github.com/allmarkedup/purl

que te permite hacer simplemente

 url = 'http://example.com?sent=yes'; sent = $.url(url).param('sent'); if (typeof sent != 'undefined') { // sent exists if (sent == 'yes') { // sent is equal to yes // ... } } 

El ejemplo es asumir que estás usando jQuery. También podría usarlo simplemente como javascript, la syntax sería un poco diferente.

Esto podría ser excesivo, pero ahora hay una biblioteca muy popular disponible para analizar URI, llamada URI.js.

Ejemplo

 var uri = "http://example.org/foo.html?technology=jquery&technology=css&blog=stackoverflow"; var components = URI.parse(uri); var query = URI.parseQuery(components['query']); document.getElementById("result").innerHTML = "URI = " + uri; document.getElementById("result").innerHTML += "
technology = " + query['technology']; // If you look in your console, you will see that this library generates a JS array for multi-valued queries! console.log(query['technology']); console.log(query['blog']);
   

Prueba esta demostración funcional http://jsfiddle.net/xy7cX/

API:

Esto debería ayudar :)

código

 var url = "http://myurl.com?sent=yes" var pieces = url.split("?"); alert(pieces[1] + " ===== " + $.inArray("sent=yes", pieces)); 

Esto te dará un buen objeto para trabajar

  function queryParameters () { var result = {}; var params = window.location.search.split(/\?|\&/); params.forEach( function(it) { if (it) { var param = it.split("="); result[param[0]] = param[1]; } }); return result; } 

Y entonces;

  if (queryParameters().sent === 'yes') { ..... 

Esto se basa en la respuesta de Gazoris , pero la URL decodifica los parámetros para que puedan usarse cuando contienen datos que no sean números y letras:

 function urlParam(name){ var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); // Need to decode the URL parameters, including putting in a fix for the plus sign // https://stackoverflow.com/a/24417399 return results ? decodeURIComponent(results[1].replace(/\+/g, '%20')) : null; } 

Tan simple que puede usar cualquier url y obtener valor

 function getParameterByName(name, url) { if (!url) url = window.location.href; name = name.replace(/[\[\]]/g, "\\$&"); var regex = new RegExp("[?&]" + name + "(=([^&#]*)|&|#|$)"), results = regex.exec(url); if (!results) return null; if (!results[2]) return ''; return decodeURIComponent(results[2].replace(/\+/g, " ")); } 

Ejemplo de uso

 // query string: ?first=value1&second=&value2 var foo = getParameterByName('first'); // "value1" var bar = getParameterByName('second'); // "value2" 

Nota: Si un parámetro está presente varias veces (? First = value1 y second = value2), obtendrá el primer valor (value1) y el segundo valor como (value2).

Hay otro ejemplo con el uso de la biblioteca URI.js.

Ejemplo responde las preguntas exactamente como se le preguntó.

 var url = 'http://example.com?sent=yes'; var urlParams = new URI(url).search(true); // 1. Does sent exist? var sendExists = urlParams.sent !== undefined; // 2. Is it equal to "yes"? var sendIsEqualtToYes = urlParams.sent == 'yes'; // output results in readable form // not required for production if (sendExists) { console.log('Url has "sent" param, its value is "' + urlParams.sent + '"'); if (urlParams.sent == 'yes') { console.log('"Sent" param is equal to "yes"'); } else { console.log('"Sent" param is not equal to "yes"'); } } else { console.log('Url hasn\'t "sent" param'); } 
  

Versión Coffeescript de la respuesta de Sameer

 getUrlParameter = (sParam) -> sPageURL = window.location.search.substring(1) sURLVariables = sPageURL.split('&') i = 0 while i < sURLVariables.length sParameterName = sURLVariables[i].split('=') if sParameterName[0] == sParam return sParameterName[1] i++ 

Una ligera mejora en la respuesta de Sameer, guarda los parámetros en el cierre para evitar el análisis y el bucle de todos los parámetros cada vez que se llama

 var getURLParam = (function() { var paramStr = decodeURIComponent(window.location.search).substring(1); var paramSegs = paramStr.split('&'); var params = []; for(var i = 0; i < paramSegs.length; i++) { var paramSeg = paramSegs[i].split('='); params[paramSeg[0]] = paramSeg[1]; } console.log(params); return function(key) { return params[key]; } })(); 

Yo uso esto y funciona. http://codesheet.org/codesheet/NF246Tzs

 function getUrlVars() { var vars = {}; var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function(m,key,value) { vars[key] = value; }); return vars; } var first = getUrlVars()["id"]; 

Con JavaScript simple, puede tomar fácilmente los parámetros (location.search), obtener la subcadena (sin?) Y convertirla en una matriz, dividiéndola por ‘&’.

A medida que itera a través de urlParams, puede dividir la cadena nuevamente con ‘=’ y agregarla al objeto ‘params’ como objeto [elmement [0]] = element [1]. Súper simple y de fácil acceso.

http://www.website.com/?error=userError&type=handwritten

  var urlParams = location.search.substring(1).split('&'), params = {}; urlParams.forEach(function(el){ var tmpArr = el.split('='); params[tmpArr[0]] = tmpArr[1]; }); var error = params['error']; var type = params['type']; 

¿Qué pasa si hay & en el parámetro URL como filename = “p & g.html” & uid = 66

En este caso, la primera función no funcionará correctamente. Así que modifiqué el código

 function getUrlParameter(sParam) { var sURLVariables = window.location.search.substring(1).split('&'), sParameterName, i; for (i = 0; i < sURLVariables.length; i++) { sParameterName = sURLVariables[i].split('='); if (sParameterName[0] === sParam) { return sParameterName[1] === undefined ? true : decodeURIComponent(sParameterName[1]); } } } 

Es cierto que estoy agregando mi respuesta a una pregunta sobre respondida, pero esto tiene las ventajas de:

– No depende de ninguna biblioteca externa, incluyendo jQuery

– No contamina el espacio de nombres de la función global, extendiendo ‘String’

– No se crean datos globales y se realiza un procesamiento innecesario después de encontrar el partido

– Manejo de problemas de encoding y aceptación (asumiendo) nombre de parámetro no codificado

– Evitar los bucles explícitos

 String.prototype.urlParamValue = function() { var desiredVal = null; var paramName = this.valueOf(); window.location.search.substring(1).split('&').some(function(currentValue, _, _) { var nameVal = currentValue.split('='); if ( decodeURIComponent(nameVal[0]) === paramName ) { desiredVal = decodeURIComponent(nameVal[1]); return true; } return false; }); return desiredVal; }; 

Entonces lo usarías como:

 var paramVal = "paramName".urlParamValue() // null if no match 

Si quieres encontrar un parámetro específico de una url específica:

 function findParam(url, param){ var check = "" + param; if(url.search(check )>=0){ return url.substring(url.search(check )).split('&')[0].split('=')[1]; } } var url = "http://www.yourdomain.com/example?id=1&order_no=114&invoice_no=254"; alert(findParam(url,"order_no")); 

Usando URLSearchParams :

 var params = new window.URLSearchParams(window.location.search); console.log(params.get('name')); 

Otra solución que usa jQuery y JSON, para que pueda acceder a los valores de los parámetros a través de un objeto.

 var loc = window.location.href; var param = {}; if(loc.indexOf('?') > -1) { var params = loc.substr(loc.indexOf('?')+1, loc.length).split("&"); var stringJson = "{"; for(var i=0;i 

Suponiendo que tu URL es http://example.com/?search=hello+world&language=en&page=3

Después de eso, solo es cuestión de usar los parámetros como este:

 param.language 

regresar

 en 

El uso más útil de esto es ejecutarlo en la carga de página y hacer uso de una variable global para usar los parámetros en cualquier lugar que los necesite.

Si su parámetro contiene valores numéricos, simplemente analice el valor.

 parseInt(param.page) 

Si no hay parámetros, param será solo un objeto vacío.

 $.urlParam = function(name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } 

utilizar esta

 $.urlParam = function(name) { var results = new RegExp('[\?&]' + name + '=([^&#]*)').exec(window.location.href); return results[1] || 0; } 

Solo quería mostrar mis códigos:

 function (name) { name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"), results = regex.exec(location.search); return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " ")); 

}