如何将对象序列化为URL查询参数列表?

2022-08-30 00:35:10

在不知道JavaScript的键的情况下,我怎么能转动这样的东西......Object

var obj = {
   param1: 'something',
   param2: 'somethingelse',
   param3: 'another'
}

obj[param4] = 'yetanother';

...到。。。

var str = 'param1=something&param2=somethingelse&param3=another&param4=yetanother';

...?


答案 1

一行没有依赖关系:

new URLSearchParams(obj).toString();
// OUT: param1=something&param2=somethingelse&param3=another&param4=yetanother

将其与内置的URL一起使用,如下所示:

let obj = { param1: 'something', param2: 'somethingelse', param3: 'another' }
obj['param4'] = 'yetanother';
const url = new URL(`your_url.com`);
url.search = new URLSearchParams(obj);
const response = await fetch(url);

[编辑2020年4月4日]:值将被解释为字符串。null'null'

[编辑2022年3月9日]:浏览器兼容性


答案 2

如果您使用jQuery,这就是它用于参数化GET XHR请求的选项:

$.param( obj )

http://api.jquery.com/jQuery.param/