我正在try 使用新的Fetch API:

我提出的GET个请求是这样的:

var request = new Request({
  url: 'http://myapi.com/orders',
  method: 'GET'
});
fetch(request);

但是,我不确定如何向GET请求中添加查询字符串.理想情况下,我希望能够向URL提出GET个请求,比如:

'http://myapi.com/orders?order_id=1'

jQuery中,我可以通过传递{order_id: 1}作为$.ajax()data参数来做到这一点.对于新的Fetch API,有没有同等的方法来做到这一点呢?

推荐答案

Update March 2017:

Chrome 51正式支持URL.searchParams,但其他浏览器仍需要polyfill.


处理查询参数的official种方法就是将它们添加到URL中.从the spec开始,这是一个例子:

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属性(在 compose 本文时),因此您可能希望使用third party libraryroll-your-own solution.

Update April 2018:

使用URLSearchParams constructor,您可以指定一个二维数组或对象,然后将其分配给url.search,而不是在所有关键点上循环并附加它们

var url = new URL('https://sl.se')

var params = {lat:35.696233, long:139.570431} // or:
var params = [['lat', '35.696233'], ['long', '139.570431']]

url.search = new URLSearchParams(params).toString();

fetch(url)

SideNote:URLSearchParams在NodeJS中也可用

const { URL, URLSearchParams } = require('url');

Javascript相关问答推荐

为什么新的Promises会在不需要的情况下被用来等待?

获取POS餐厅会话用户/收银员

Math.random超出了最大调用堆栈

React Hooks中useState的同步问题

RxJS setTimeout操作符等效

使用JavaScript重新排序行

当运行d3示例代码时,没有显示任何内容

单击ImageListItemBar的IconButton后,在Material—UI对话框中显示图像

你怎么看啦啦队的回应?

在JS中拖放:检测文件

无法使用单击按钮时的useState将数据从一个页面传递到另一个页面

单个HTML中的多个HTML文件

在使用位板时,如何在Java脚本中判断Connect 4板中中柱的对称性?

如何将数组用作复合函数参数?

使用类型:assets资源 /资源&时,webpack的配置对象&无效

按什么顺序接收`storage`事件?

如何在AG-Grid文本字段中创建占位符

是否设置以JavaScript为背景的画布元素?

按特定顺序将4个数组组合在一起,按ID分组

为什么我的Navbar.css没有显示在本地主机页面上?