[英]How to add nested body to fetch()
如何将嵌套主体添加到fetch()
function?
我有这个身体:
{
"locations": [
{
"latLng": {
"lat": 123,
"lng": 123
}
},
{
"latLng": {
"lat": 123,
"lng": 123
}
}
]
}
我尝试使用此代码,但它返回我SyntaxError: Unexpected token o in JSON at position 1
:
fetch(url, {
method: "post",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: {
"locations": [
{
"latLng": {
"lat": 53.438679,
"lng": 14.520770
}
},
{
"latLng": {
"lat": 53.450439,
"lng": 14.536400
}
}
]
}
});
用于fetch
的 init object 的body
可以是以下之一: Blob
、 BufferSource
、 FormData
、 URLSearchParams
、 USVString
(字符串)或ReadableStream
object。 ( MDN |规范)
你没有给它任何这些东西。 你给它一个普通的 object。 如果你想发送JSON ,你需要给它一个字符串:
fetch(url, {
method: "post",
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
// −−−−−−−^^^^^^^^^^^^^^^
"locations": [
{
"latLng": {
"lat": 53.438679,
"lng": 14.520770
}
},
{
"latLng": {
"lat": 53.450439,
"lng": 14.536400
}
}
]
})
// −−−−−−^
});
您收到特定错误的原因是,由于您提供的内容不是它所期望的内容之一,因此fetch
正在将其转换为字符串,就像您String(yourObject)
一样。 在一个普通的 object 上,除非你已经做了一些事情来覆盖它(你在你的例子中没有这样做),结果是"[object Object]"
,这是无效的 JSON 在object
之后的o
[
。
请记住:JSON 是用于数据交换的文本符号。 (更多在这里。)如果您正在处理 JavaScript 源代码,而不是处理字符串,那么您就不是在处理 JSON。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.