2011-10-19 19 views
5

Tutti,Ottieni Querystring con Dojo

Gli utenti si imbatteranno in un URL che contiene una query query chiamata "tipo di richiesta". Per una serie di motivi, ho bisogno di leggere in questa querystring con javascript (Dojo) e salvare il suo valore in una variabile. Ho fatto una discreta ricerca cercando di scoprire come farlo, e ho scoperto alcune possibilità, ma nessuna di queste sembra effettivamente leggere in una querystring che non è codificata da qualche parte nella sceneggiatura.

Qualche esempio o idea che sai di quello che potrebbe aiutarmi qui?

Grazie!

risposta

9

È possibile accedere ai parametri dall'URL utilizzando location.search senza 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; 
} 

allora si potrebbe effettuare le seguenti operazioni per estrarre id dall'URL /hello.php?id=5&name=value

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

Dojo fornisce http://dojotoolkit.org/reference-guide/dojo/queryToObject.html che è un po 'più intelligente della mia semplice implementazione e crea array con chiavi duplicate.

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 per l'inclusione degli decodeURIComponent – DefyGravity

+0

"Questo è il primo risultato di Google per la ricerca di "parametri di stringa di query dojo" - Ooft –

+0

è stato definito l'URI nel dojo, puoi dire se Dojo ha un metodo per chiamarlo dall'URL del browser, o devo fare un semplice javascript – Friendy

0

Dal dojo 0.9, esiste un'opzione migliore, queryToObject.

dojo.queryToObject(query) 

Vai a questa similar question con quello che penso è una risposta più pulita.

0

Nel nuovo dojo è accessibile con IO-query:

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