¿Cómo obtener variables "GET" de una solicitud en JavaScript?
¿JQuery o YUI! ¿Tiene esta función incorporada?
¿Cómo obtener variables "GET" de una solicitud en JavaScript?
¿JQuery o YUI! ¿Tiene esta función incorporada?
Respuestas:
Todos los datos están disponibles en
window.location.search
tienes que analizar la cadena, por ejemplo.
function get(name){
if(name=(new RegExp('[?&]'+encodeURIComponent(name)+'=([^&]*)')).exec(location.search))
return decodeURIComponent(name[1]);
}
simplemente llame a la función con el nombre de variable GET como parámetro, por ejemplo.
get('foo');
esta función devolverá el valor de las variables o indefinido si la variable no tiene valor o no existe
Podrías usar jquery.urlme gustó esto:
var xyz = jQuery.url.param("param_in_url");
Fuente actualizada: https://github.com/allmarkedup/jQuery-URL-Parser
var xyz = jQuery.url().param("param_in_url");es la sintaxis correcta donde jQuery.url()da la URL de la página actual. Realice la corrección.
Solo para poner mis dos centavos, si quisiera un objeto que contenga todas las solicitudes
function getRequests() {
var s1 = location.search.substring(1, location.search.length).split('&'),
r = {}, s2, i;
for (i = 0; i < s1.length; i += 1) {
s2 = s1[i].split('=');
r[decodeURIComponent(s2[0]).toLowerCase()] = decodeURIComponent(s2[1]);
}
return r;
};
var QueryString = getRequests();
//if url === "index.html?test1=t1&test2=t2&test3=t3"
console.log(QueryString["test1"]); //logs t1
console.log(QueryString["test2"]); //logs t2
console.log(QueryString["test3"]); //logs t3
Tenga en cuenta que la clave para cada parámetro de obtención se establece en minúsculas. Entonces, hice una función de ayuda. Así que ahora no distingue entre mayúsculas y minúsculas.
function Request(name){
return QueryString[name.toLowerCase()];
}
pruebe el siguiente código, le ayudará a obtener los parámetros GET de la URL. para más detalles.
var url_string = window.location.href; // www.test.com?filename=test
var url = new URL(url_string);
var paramValue = url.searchParams.get("filename");
alert(paramValue)
Hoy necesitaba obtener los parámetros de solicitud de la página en una matriz asociativa, así que reuní lo siguiente, con un poco de ayuda de mis amigos . También maneja parámetros sin un =as true.
Con un ejemplo:
// URL: http://www.example.com/test.php?abc=123&def&xyz=&something%20else
var _GET = (function() {
var _get = {};
var re = /[?&]([^=&]+)(=?)([^&]*)/g;
while (m = re.exec(location.search))
_get[decodeURIComponent(m[1])] = (m[2] == '=' ? decodeURIComponent(m[3]) : true);
return _get;
})();
console.log(_GET);
> Object {abc: "123", def: true, xyz: "", something else: true}
console.log(_GET['something else']);
> true
console.log(_GET.abc);
> 123
Puede analizar la URL de la página actual para obtener los parámetros GET. La URL se puede encontrar usando location.href.
Si ya usa jquery, hay un complemento de jquery que maneja esto:
Una solución de reducción de mapas:
var urlParams = location.search.split(/[?&]/).slice(1).map(function(paramPair) {
return paramPair.split(/=(.+)?/).slice(0, 2);
}).reduce(function (obj, pairArray) {
obj[pairArray[0]] = pairArray[1];
return obj;
}, {});
Uso:
For url: http://example.com?one=1&two=2
console.log(urlParams.one) // 1
console.log(urlParams.two) // 2
map/reducees solo un mecanismo de procesamiento de colecciones: se puede utilizar con datos de cualquier tamaño. es más famoso por big data debido a su disposición a ser paralelizado
A diferencia de otras respuestas, el UrlSearchParamsobjeto puede evitar el uso de expresiones regulares u otra manipulación de cadenas y está disponible en la mayoría de los navegadores modernos:
var queryString = location.search
let params = new URLSearchParams(queryString)
// example of retrieving 'id' parameter
let id = parseInt(params.get("id"))
console.log(id)
La función aquí devuelve el parámetro por nombre. Con pequeños cambios, podrá devolver la URL base, el parámetro o el ancla.
function getUrlParameter(name) {
var urlOld = window.location.href.split('?');
urlOld[1] = urlOld[1] || '';
var urlBase = urlOld[0];
var urlQuery = urlOld[1].split('#');
urlQuery[1] = urlQuery[1] || '';
var parametersString = urlQuery[0].split('&');
if (parametersString.length === 1 && parametersString[0] === '') {
parametersString = [];
}
// console.log(parametersString);
var anchor = urlQuery[1] || '';
var urlParameters = {};
jQuery.each(parametersString, function (idx, parameterString) {
paramName = parameterString.split('=')[0];
paramValue = parameterString.split('=')[1];
urlParameters[paramName] = paramValue;
});
return urlParameters[name];
}
Funciona para mi en
url: http: // localhost: 8080 / # /? access_token = 111
function get(name){
const parts = window.location.href.split('?');
if (parts.length > 1) {
name = encodeURIComponent(name);
const params = parts[1].split('&');
const found = params.filter(el => (el.split('=')[0] === name) && el);
if (found.length) return decodeURIComponent(found[0].split('=')[1]);
}
}