【发布时间】:2021-09-11 14:36:19
【问题描述】:
使用 fetch 我收到一个错误的请求以及 JSON 中的意外令牌
获取请求:
const searchResults = function(e){
fetch('/elpers/search' ,
{
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify(e.value)
}).then(res => {
res.json()
}).then(data => {
console.log(data)
}).catch(err => {
console.error(err)
})
}
发布路线
const postSearch = (req, res) => {
console.log(req.body)
res.send({'result': 'value'});
}
编辑:这对我有用JSON.stringify({result: e.value})
错误:
search.js:2 POST http://localhost:3000/elpers/search 400 (Bad Request) VM118:1 Uncaught (in promise) SyntaxError: Unexpected token < in JSON at position 0
【问题讨论】:
-
unexpected token <错误,根据我的经验,通常表明 API 调用在响应中导致了 JSON(通常是 HTML)以外的内容。这可能是因为.then正在被调用,它正在尝试执行res.json()。当响应状态码为 400 时,Fetch 不会抛出错误。您应该找出导致 API 发出 400 Bad Request 的原因,并检查.then中的有效响应状态码。 -
尝试删除 than() 。您正在使用 tww then 在函数中删除数据 then()。
-
@Matt U uh 我正在接收文本/htmt,即使我尝试发送 json 响应
-
这能回答你的问题吗? Unexpected token < in JSON at position 0
-
@Jared Smith 我不知道如何应用已接受的答案我在 localhost 上运行服务器
标签: javascript node.js express ejs