使用Dojo获取Querystring

ndi*_*est 5 javascript dojo query-string

所有,

用户将遇到一个包含名为"inquirytype"的查询字符串的URL.出于多种原因,我需要使用javascript(Dojo)读取此查询字符串并将其值保存到变量中.我已经做了大量的研究试图找到如何做到这一点,并且我发现了一些可能性,但它们似乎都没有真正读入在脚本中某处没有硬编码的查询字符串中.

你知道的任何例子或想法会对我有帮助吗?

谢谢!

Jua*_*des 9

您可以使用location.search来访问url中的参数而不使用Dojo 可以通过手动url参数确定javascript属性值吗?

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;
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以执行以下操作从URL中提取ID /hello.php?id=5&name=value

var params = getUrlParams();
var id = params['id']; // or params.id
Run Code Online (Sandbox Code Playgroud)

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"
// }
Run Code Online (Sandbox Code Playgroud)