Les utilisateurs se heurtent à une URL qui contient une chaîne de requête appelée inquirytype
. Pour un certain nombre de raisons, j'ai besoin de lire cette chaîne de requête avec javascript (Dojo) et de sauvegarder sa valeur dans une variable. J'ai fait pas mal de recherches pour trouver comment faire cela, et j'ai découvert quelques possibilités, mais aucune d'entre elles ne semble lire une chaîne de requête qui n'est pas codée en dur quelque part dans le script.
Réponses
Trop de publicités?Vous pouvez accéder aux paramètres de l'url en utilisant location.search sans Dojo La valeur d'un attribut javascript peut-elle être déterminée par un paramètre url manuel ?
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;
}
Vous pouvez alors procéder comme suit pour extraire l'identifiant de l'url /hello.php?id=5&name=value
var params = getUrlParams();
var id = params['id']; // or params.id
Le Dojo fournit http://dojotoolkit.org/reference-guide/dojo/queryToObject.html qui est un peu plus intelligent que ma simple implémentation et crée des tableaux à partir de clés dupliquées.
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"
// }
Depuis dojo 0.9, il existe une meilleure option, queryToObject .
dojo.queryToObject(query)
Voir ceci question similaire avec ce que je pense être une réponse plus propre.