2011-10-19 12 views
5

Todo,Obtener Querystring con Dojo

Los usuarios se encontrarán con una URL que contiene una cadena de consulta llamada "tipo de consulta". Por una serie de razones, necesito leer en esta cadena de consulta con javascript (Dojo) y guardar su valor en una variable. He investigado bastante para tratar de encontrar cómo hacerlo y he descubierto algunas posibilidades, pero ninguna de ellas parece leer realmente en una cadena de consulta que no está codificada en algún lugar del guión.

¿Algún ejemplo o idea que conozcas que me ayude aquí?

Gracias!

Respuesta

9

Puede acceder a los parámetros de la URL utilizando location.search sin Dojo Can a javascript attribute value be determined by a manual url parameter?

function getUrlParams() { 

    var paramMap = {}; 
    if (location.search.length == 0) { 
    return paramMap; 
    } 
    var parts = location.search.substring(1).split("&"); 

    for (var i = 0; i < parts.length; i ++) { 
    var component = parts[i].split("="); 
    paramMap [decodeURIComponent(component[0])] = decodeURIComponent(component[1]); 
    } 
    return paramMap; 
} 

entonces usted podría hacer lo siguiente para extraer Identificación de la url /hello.php?id=5&name=value

var params = getUrlParams(); 
var id = params['id']; // or params.id 

Dojo proporciona http://dojotoolkit.org/reference-guide/dojo/queryToObject.html que es un poco más inteligente que mi implementación simple y crea arreglos de claves duplicadas.

var uri = "http://some.server.org/somecontext/?foo=bar&foo=bar2&bit=byte"; 
var query = uri.substring(uri.indexOf("?") + 1, uri.length); 
var queryObject = dojo.queryToObject(query); 

//The structure of queryObject will be: 
// { 
// foo: ["bar", "bar2], 
// bit: "byte" 
// } 
+1

+1 para la inclusión de la decodeURIComponent – DefyGravity

+0

"Eso es primer resultado de Google en la búsqueda de 'parámetros de cadena de consulta dojo' - Ooft –

+0

ha definido el URI sí mismo en dojo, ¿puedes decir si Dojo tiene un método para llamarlo desde la URL del navegador, o necesito hacer un simple javascript – Friendy

0

En nuevo dojo se accede con io-consulta:

require([ 
    "dojo/io-query", 
], function (ioQuery) { 
    GET = ioQuery.queryToObject(decodeURIComponent(dojo.doc.location.search.slice(1))); 
    console.log(GET.id);    
});