Javascript 当我查询API时,JSON中位于位置0的意外标记O
我知道这个问题可以在论坛上找到,但没有一个答案适合我。我有一个angular服务调用nodeJS API,如下所示: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
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'});