Javascript 对象的查询字符串编码

新手上路,请多包涵

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

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

原文由 napolux 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 855
2 个回答

像这样?

 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

原文由 user187291 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题