Les utilisateurs seront confrontés à une URL qui contient une chaîne de requête appelée inquirytype
. Pour un certain nombre de raisons, je dois lire cette chaîne de requête avec javascript (Dojo) et enregistrer sa valeur dans une variable. J'ai fait pas mal de recherches en essayant de trouver comment faire, et j'ai découvert quelques possibilités, mais aucune d'entre elles ne semble réellement lire dans une chaîne de requête qui n'est pas codée en dur quelque part dans le script.
3 réponses
Vous pouvez accéder aux paramètres à partir de l'URL à l'aide de location.search sans Dojo Une valeur d'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;
}
Ensuite, vous pouvez faire ce qui suit pour extraire l'id de l'url /hello.php?id=5&name=value
var params = getUrlParams();
var id = params['id']; // or params.id
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 cette question similaire avec ce que je pense être une réponse plus claire .
Dans le nouveau dojo, il est accessible avec io-query:
require([
"dojo/io-query",
], function (ioQuery) {
GET = ioQuery.queryToObject(decodeURIComponent(dojo.doc.location.search.slice(1)));
console.log(GET.id);
});
Questions connexes
De nouvelles questions
javascript
Pour des questions concernant la programmation dans ECMAScript (JavaScript / JS) et ses divers dialectes / implémentations (hors ActionScript). Veuillez inclure toutes les balises pertinentes dans votre question; par exemple, [node.js], [jquery], [json], etc.