javascript - 当我查询 API 时,JSON 中位置 0 出现意外的标记 O

标签 javascript node.js angular api

我知道这个问题可以在论坛上找到,但没有答案适合我。我有一个 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)
  }

NodeJS API

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

API 调用得很好,插入数据库工作正常,但我在浏览器中看到以下消息:

SyntaxError: Unexpected token O in JSON at position 0

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

不知道问题是出在前端还是后端。

经过一些研究后,我尝试在发送对象之前解析它。我也尝试字符串化。

没有成功

有人能解决这个问题吗?非常感谢

最佳答案

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

由于 Angular 的默认响应类型是 JSON,并且代码 200 的默认响应是“OK”。您必须调整其中之一。

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

this.http.post<User>(url, pUser, {responseType: 'text'});

或者返回一个 JSON 对象:

res.status(200).send({ status: 'OK'});

关于javascript - 当我查询 API 时,JSON 中位置 0 出现意外的标记 O,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58941004/

相关文章:

javascript - 如何从拖动选项表创建表

javascript - 在 Angular 应用程序之外使用 Angular 过滤器

node.js - 将 JSON 作为命令行参数传递给 Node

node.js - 使用 gulp-compass 时为 "Error: spawn/usr/bin/compass ENOENT"

angular - 如何使用多个参数在angular5中发送POST?

angular - CanDeactivate 不起作用

javascript - 停止动态创建的音频

javascript - 每分钟调用函数

php - 在 php 和 javascript 中制作 "mosaic"效果

javascript - React - 改变一个不受控制的输入