Obtener los valores de los parámetros "GET" (JavaScript) [duplicado]

Resuelto joe asked hace 15 años • 63 respuestas

Tengo una URL con algunos parámetros GET de la siguiente manera:

www.test.com/t.html?a=1&b=3&c=m2-m3-m4-m5 

Necesito obtener el valor total de c. Intenté leer la URL, pero solo obtuve m2. ¿Cómo hago esto usando JavaScript?

joe avatar Jun 11 '09 15:06 joe
Aceptado

JavaScript en sí no tiene nada integrado para manejar parámetros de cadena de consulta.

El código que se ejecuta en un navegador ( moderno ) puede utilizar el URLobjeto (una API web ). URLtambién está implementado por Node.js :

// You can get url_string from window.location.href if you want to work with
// the URL of the current page
var url_string = "http://www.example.com/t.html?a=1&b=3&c=m2-m3-m4-m5"; 
var url = new URL(url_string);
var c = url.searchParams.get("c");
console.log(c);
Expandir fragmento


Para navegadores más antiguos (incluido Internet Explorer), puede utilizar este polyfill .

También puede usar uno para URLSearchParams y extraer la cadena de consulta para pasarla con window.location.search.substring(1).


También puede utilizar el código de la versión original de esta respuesta anterior URL. El polyfill anterior es robusto y está bien probado, aunque lo recomiendo encarecidamente.

Podrías acceder location.search, lo que te daría desde el ?carácter hasta el final de la URL o el inicio del identificador del fragmento (#foo), lo que ocurra primero.

Entonces puedes analizarlo con esto:

Mostrar fragmento de código

Puede obtener la cadena de consulta de la URL de la página actual con:

var query = window.location.search.substring(1);
var qs = parse_query_string(query);
Quentin avatar Jun 11 '2009 08:06 Quentin

La mayoría de las implementaciones que he visto omiten la decodificación de URL de los nombres y los valores.

Aquí hay una función de utilidad general que también realiza una decodificación de URL adecuada:

function getQueryParams(qs) {
    qs = qs.split('+').join(' ');

    var params = {},
        tokens,
        re = /[?&]?([^=]+)=([^&]*)/g;

    while (tokens = re.exec(qs)) {
        params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
    }

    return params;
}

//var query = getQueryParams(document.location.search);
//alert(query.foo);
Ates Goral avatar Jul 08 '2009 18:07 Ates Goral

fuente

function gup( name, url ) {
    if (!url) url = location.href;
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( url );
    return results == null ? null : results[1];
}
gup('q', 'hxxp://example.com/?q=abc')
Haim Evgi avatar Jun 11 '2009 08:06 Haim Evgi