Query-string encoding of a Javascript Object

前端 未结 30 2953
渐次进展
渐次进展 2020-11-22 00:23

Do you know a fast and simple way to encode a Javascript Object into a string that I can pass via a GET Request?

No jQuery, no

30条回答
  •  逝去的感伤
    2020-11-22 01:05

    like this?

    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

    Edit: this one also converts recursive objects (using php "array" notation for the query string)

    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

提交回复
热议问题