1. ホーム
  2. javascript

[解決済み] Javascriptオブジェクトのクエリ文字列エンコーディング

2022-03-16 04:57:13

質問

Javascriptオブジェクトを高速かつ簡単に string を介して渡すことができます。 GET リクエストは?

いいえ jQuery 他のフレームワークも使わず、純粋にJavascriptだけで構成されています。)

解決方法は?

このように?

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の"array"表記を使用します)。

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