2017年3月更新:
URL.searchParams 已正式在Chrome 51中得到支持,但其他浏览器仍需要 polyfill。
与查询参数一起工作的官方方法就是将它们添加到URL上。根据规范,以下是一个例子:
var url = new URL("https://geo.example.org/api"),
params = {lat:35.696233, long:139.570431}
Object.keys(params).forEach(key => url.searchParams.append(key, params[key]))
fetch(url).then(/* … */)
然而,我不确定Chrome是否支持URL的searchParams
属性(截至撰写本文之时),因此您可能需要使用第三方库或自己编写解决方案。
更新于2018年4月:
通过使用URLSearchParams构造函数,您可以将2D数组或对象赋值给url.search
,而不是循环遍历所有键并附加它们。
var url = new URL('https://sl.se')
var params = {lat:35.696233, long:139.570431}
var params = [['lat', '35.696233'], ['long', '139.570431']]
url.search = new URLSearchParams(params).toString();
fetch(url)
注意:在 NodeJS 中也可以使用 URLSearchParams
。
const { URL, URLSearchParams } = require('url');
new URLSearchParams({foo: ['bar', 'baz']})
,但它并不是foo=bar&foo=baz
而是被转义为foo=bar%Cbaz
。 - jymbobs = new URLSearchParams({foo: 'bar'}); s.append('foo', 'baz'); s.toString()
。或者,构造函数可以接受一个列表而不是对象。new URLSearchParams([['foo', 'bar'], ['foo', 'baz']]).toString()
请参阅文档页面以获取更多使用信息:https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams - Scotty Jamison`https://example.com?${new URLSearchParams({foo: 'value'})}`
参考链接:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings - RavenHursTbar: 2
应改为bar: '2'
。 - Matthew Darton