Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 当我查询API时,JSON中位于位置0的意外标记O_Javascript_Node.js_Angular_Api - Fatal编程技术网

Javascript 当我查询API时,JSON中位于位置0的意外标记O

Javascript 当我查询API时,JSON中位于位置0的意外标记O,javascript,node.js,angular,api,Javascript,Node.js,Angular,Api,我知道这个问题可以在论坛上找到,但没有一个答案适合我。我有一个angular服务调用nodeJS API,如下所示: this.http.post<User>(url, pUser, {responseType: 'text'}); 角度服务 public createUser(pUser: User): Observable<User> { var url = "http://localhost:5000/users"; var json = JSON

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

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

public createUser(pUser: User): Observable<User> {
    var url = "http://localhost:5000/users";
    var json = JSON.stringify(pUser)
    return this.http.post<User>(url, pUser)
  }
API很好地调用,插入数据库也很有效,但我在浏览器中看到这样一条消息:

SyntaxError:JSON中位于位置0的意外标记O

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

我不知道问题是来自前端还是后端

在做了一些研究之后,我尝试在发送之前解析我的对象。我也试着把它串起来

无功而返


这个人会有解决办法吗?非常感谢

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

由于angular的默认响应类型为JSON,代码200的默认响应为“OK”。你必须调整其中一个

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

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

如果您没有发送任何内容作为响应,最好发送状态204(无内容):

res.sendStatus(204)

你的Angular应用程序应该能够处理它,并且不会抛出错误

如果发送状态200,最好在
res.status(200)中添加一些json对象,例如
{status:“OK”}
。发送({status:“OK”})
。否则,您将发送字符串“OK”,并将获得“意外令牌O…”(O来自“OK”)

从快递文件:
res.sendStatus(200)//相当于res.status(200)。send('OK')

API可能正在为您解析JSON,因此您试图解析字符串“[Object…”当我在不解析的情况下直接发送数据时,我也会出错。关键是要找出实际HTTP数据中的内容。您的浏览器有一个“网络”开发者标签会告诉你的。我看了,除了状态200之外,我找不到任何东西。请求负载是{email:“b”,密码:“b”}好的“OK”是无效的JSON:)+1谢谢!我的Nodejs服务器代码有
res.sendStatus(200);
用于我的补丁请求,你的回答像符咒一样修复了它。
res.status(200).send({ status: 'OK'});