如何向 javascript 的 fetch() 函数发送额外数据

a53*_*416 3 javascript jquery json fetch-api

我想用来fetch()查询支持我的搜索页面的 API 端点。它以 JSON 格式返回搜索结果列表。

我还想将用户提交的当前查询传递给 API。旧的实现使用 jquery 和getJSON。查看 getJSON 的文档,它说我可以传入一个data变量:

数据
类型:普通对象或字符串
随请求发送到服务器的普通对象或字符串。

查看 fetch的文档,我不确定如何将数据作为我的请求的一部分传递。所以我的问题是,我如何传入一个将与我的请求一起发送到服务器的字符串?

编辑:我想我可以将查询附加到请求 URL,如“/search/?q=Something”并发送。有没有人有更好的方法?

JLR*_*she 5

如果您查看有关 fetch 的文档的正文部分,它会列出几种类型的值,您可以使用它们来指定请求中发送的数据。

使用示例FormData

var fd = new FormData();
fd.append('q', 'Something');

fetch('/search', {
  method : "POST",
  body : fd
})
.then(...)
Run Code Online (Sandbox Code Playgroud)

请注意,您不能body在 GET 或 HEAD 请求上使用该选项(在您的情况下似乎您可能正在这样做)。在这种情况下,您可以使用URLSearchParams以下方法构建参数:

var params = new URLSearchParams();
params.append('q', 'Something');

fetch('/search/?' + params.toString(), {
    method: 'GET'
})
.then(...);
Run Code Online (Sandbox Code Playgroud)