当我查询 API 时,JSON 中位置 0 的意外令牌 O

Cod*_*g59 3 javascript api node.js angular

我知道这个问题可以在论坛上找到,但没有答案适合我。我有一个像这样调用 nodeJS API 的 angular 服务:

角度服务

public createUser(pUser: User): Observable<User> {
    var url = "http://localhost:5000/users";
    var json = JSON.stringify(pUser)
    return this.http.post<User>(url, pUser)
  }
Run Code Online (Sandbox Code Playgroud)

节点JS API

router.post('/', (req, res) => {
    console.log(req.body)
    User.create({ email: req.body.email, password: req.body.password })
    res.sendStatus(200);
});
Run Code Online (Sandbox Code Playgroud)

该 API 调用得很好,插入数据库有效,但我在浏览器中有此消息:

语法错误:JSON 中位置 0 的意外标记 O

返回时请求的状态为 200,但错误仍然存​​在于浏览器中

不知道是前端的问题还是后端的问题。

在做了一些研究之后,我尝试在发送之前解析我的对象。我也尝试进行字符串化。

没有成功

这是有人会有解决方案吗?非常感谢您

Nor*_*tko 8

当您尝试解析无效的JSON时会发生此错误。

由于 angular 的默认响应类型是JSON,而代码 200 的默认响应是“OK”。你必须适应其中之一。

您可以将响应类型更改为text如下所示:

this.http.post<User>(url, pUser, {responseType: 'text'});
Run Code Online (Sandbox Code Playgroud)

或者你返回一个 JSON 对象:

res.status(200).send({ status: 'OK'});
Run Code Online (Sandbox Code Playgroud)