Получить Querystring с Dojo - PullRequest
       2

Получить Querystring с Dojo

5 голосов
/ 19 октября 2011

All

Пользователи будут сталкиваться с URL-адресом, содержащим строку запроса, называемую «тип запроса». По ряду причин мне нужно прочитать в этой строке запроса javascript (Dojo) и сохранить ее значение в переменной. Я провел немало исследований, пытаясь найти, как это сделать, и обнаружил несколько возможностей, но ни одна из них, по-видимому, фактически не читает в строке запроса, которая не прописана где-то в скрипте.

Какие-нибудь примеры или идеи, которые вам известны, могут помочь мне здесь?

Спасибо!

Ответы [ 3 ]

9 голосов
/ 19 октября 2011

Вы можете получить доступ к параметрам из URL, используя location.search без Dojo Можно ли определить значение атрибута javascript параметром url, заданным вручную?

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;
}

Тогда вы можете сделать следующее, чтобы извлечь id из URL /hello.php?id=5&name=value

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

Dojo предоставляет http://dojotoolkit.org/reference-guide/dojo/queryToObject.html, что немного умнее, чем моя простая реализация, и создает массивы из дублированных ключей.

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 голос
/ 04 мая 2014

В новом додзё он доступен с помощью io-запроса:

 require([
     "dojo/io-query",
 ], function (ioQuery) {
    GET = ioQuery.queryToObject(decodeURIComponent(dojo.doc.location.search.slice(1)));
    console.log(GET.id);            
 });    
0 голосов
/ 09 февраля 2013

Начиная с dojo 0.9, есть лучший вариант, queryToObject .

dojo.queryToObject(query)

См. Этот аналогичный вопрос с тем, что я считаю более чистым ответом.

...