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.

5
ndisdabest 19 oct. 2011 à 21:19

3 réponses

Meilleure réponse

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"
// }
10
Community 23 mai 2017 à 10:29

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 .

0
Community 23 mai 2017 à 12:26

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);            
 });    
1
Pehmolelu 11 mai 2014 à 20:56
7825329