使用Dojo获取查询字符串

Get Query String with Dojo

本文关键字:字符串 查询 获取 Dojo 使用      更新时间:2023-09-26

用户将碰到一个包含一个名为inquirytype的查询字符串的URL。出于多种原因,我需要用javascript (Dojo)读取这个查询字符串,并将其值保存到一个变量中。我已经做了大量的研究,试图找到如何做到这一点,我发现了一些可能性,但他们似乎都没有实际读取查询字符串,不是硬编码在脚本的某个地方。

您可以使用location从url访问参数。搜索没有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;
}

然后您可以执行以下操作从url /hello.php?id=5&name=value

提取id
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"
// }

在新的dojo中使用io-query:

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

自dojo 0.9以来,有一个更好的选择,queryToObject。

dojo.queryToObject(query)