小编典典

Javascript 对象的查询字符串编码

all

您知道将 Javascript 对象编码为string可以通过GET请求传递的快速简单的方法吗?

jQuery,没有其他框架 - 只是普通的 Javascript :)


阅读 164

收藏
2022-03-04

共1个答案

小编典典

像这样?

serialize = function(obj) {

  var str = [];

  for (var p in obj)

    if (obj.hasOwnProperty(p)) {

      str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));

    }

  return str.join("&");

}



console.log(serialize({

  foo: "hi there",

  bar: "100%"

}));

// foo=hi%20there&bar=100%25

编辑:这个也转换递归对象(使用 php“数组”表示法查询字符串)

serialize = function(obj, prefix) {

  var str = [],

    p;

  for (p in obj) {

    if (obj.hasOwnProperty(p)) {

      var k = prefix ? prefix + "[" + p + "]" : p,

        v = obj[p];

      str.push((v !== null && typeof v === "object") ?

        serialize(v, k) :

        encodeURIComponent(k) + "=" + encodeURIComponent(v));

    }

  }

  return str.join("&");

}



console.log(serialize({

  foo: "hi there",

  bar: {

    blah: 123,

    quux: [1, 2, 3]

  }

}));

// foo=hi%20there&bar%5Bblah%5D=123&bar%5Bquux%5D%5B0%5D=1&bar%5Bquux%5D%5B1%5D=2&bar%5Bquux%5D%5B2%5D=3
2022-03-04