将JavaScript对象展开以传递为查询字符串

62
我有一个JavaScript对象,需要将其展平为字符串,以便可以作为查询字符串传递,应该如何实现呢?例如: { cost: 12345, insertBy: 'testUser' } 将变成 cost=12345&insertBy=testUser 在这种情况下,我不能使用jQuery AJAX调用。虽然我们可以将对象作为data传递,但在此情况下不行。但使用jQuery将对象展平为字符串是可以的。
谢谢。

请在发布前先搜索。这个问题之前已经被问过并得到了回答。 - Lightness Races in Orbit
抱歉,我一直在搜索“展平”作为关键字,但没有找到。谢谢。 - Saxman
12个回答

1
你可以使用这个。
function serialize(obj)
{
    let str = []

    for(var p in obj)
    {
      if(obj.hasOwnProperty(p)) str.push(encodeURIComponent(p) + '=' + encodeURIComponent(obj[p]))
    }

    return str.join('&')
}

请在此链接上使用JSFiddle尝试:https://jsfiddle.net/yussan/kwmnkca6/


1
使用 Lodash 库可以这样实现:
let data = {}

_.map(data, (value, key) => `${key}=${value}`)
.join("&");

请注意,该库已被导入为:


window._ = require('lodash');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接