javascript - 将字符串拆分为参数,就像 JavaScript 中的 URL 一样

标签 javascript parameters split query-string

我通常使用此代码从 URL 获取参数:

var QueryString = function () {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  var query_string = {};
  var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
        // If first entry with this name
    if (typeof query_string[pair[0]] === "undefined") {
      query_string[pair[0]] = decodeURIComponent(pair[1]);
        // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
      query_string[pair[0]] = arr;
        // If third or later entry with this name
    } else {
      query_string[pair[0]].push(decodeURIComponent(pair[1]));
    }
  } 
    return query_string;
}();

但是,我想传递一个字符串而不是使用window.location。但是 search.substring 对此无效。

该字符串就像一个网址:a=this&b=that

有什么指点吗?

最佳答案

var QueryString = function (query) {
  // This function is anonymous, is executed immediately and 
  // the return value is assigned to QueryString!
  var query_string = {};
  //var query = window.location.search.substring(1);
  var vars = query.split("&");
  for (var i=0;i<vars.length;i++) {
    var pair = vars[i].split("=");
        // If first entry with this name
    if (typeof query_string[pair[0]] === "undefined") {
      query_string[pair[0]] = decodeURIComponent(pair[1]);
        // If second entry with this name
    } else if (typeof query_string[pair[0]] === "string") {
      var arr = [ query_string[pair[0]],decodeURIComponent(pair[1]) ];
      query_string[pair[0]] = arr;
        // If third or later entry with this name
    } else {
      query_string[pair[0]].push(decodeURIComponent(pair[1]));
    }
  } 
    return query_string;
};
//Sample Call
QueryString('a=this&b=that');

query 作为参数传递给函数定义,并注释函数内的 var query= ... 声明,并删除自执行 ()子句;

现在从任何地方调用QueryString('a=this&b=that')

关于javascript - 将字符串拆分为参数,就像 JavaScript 中的 URL 一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31998161/

相关文章:

javascript - 使用回调 url 创建 facebook 应用程序

javascript - WebGL FrameBuffer - 渲染深度纹理

c - 声明和从输入获取 char 变量的最佳方法是什么?

javascript - 在数组中添加或删除元素

javascript - 如何在来自 Servlet 的 JSP 中打印 ArrayList 中的对象

java - "Relative"类属性引用

java - 如何确保强制参数传递到 Spring MVC Controller 方法中?

r - 在单词列表上拆分字符串

string - 按分隔符拆分字符串并包含分隔符 - Common Lisp

javascript - 获取第一个单词后的字符串