NodeJS 服务器执行 POST 请求,但是 returns HTTPErrorResponse
NodeJS server performs POST request, but returns HTTPErrorResponse
我正在使用 Angular 的 HttpClient 向我的 NodeJS 服务器执行 POST 请求,如下所示:
createData(data:any):Observable<any> {
// verifying the content type is need to ensure the JSON object is sent as
// JSON object to NodeJS server
const options = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
// This still throws an HTTPResponse error, -
// SyntaxError: Unexpected token A in JSON at position 0 at JSON.parse
return this._http.post(`${this.apiUrl}`, data, options);
}
我服务器的 POST 功能是这样设置的:
router.post('/', async (req,res) => {
const body = req.body;
await database.execute(`
INSERT INTO Post (
title,
body,
date_added
) VALUES (
@title,
@body,
NOW()
)
`, {
title: body.title,
body: body.body,
})
res.end('Added post')
})
调用 createData 时,执行 POST 方法(我检查了开发工具中的网络面板,从服务器返回响应“已添加 post”,我的 json 对象作为负载发送),但控制台仍然 returns 这个 HTTPErrorResponse:
SyntaxError: JSON 中的意外标记 A 在 JSON.parse 的位置 0 () 在 XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:7508:51) 在 ZoneDelegate.invokeTask (ht..
如果服务器函数已成功返回,此错误的原因可能是什么?
服务器可以 return 成功,但是回调函数 CreateData 需要从服务器 return 编辑一个 JSON 对象。因为字符串 returned 不是 JSON,所以引发了 HTTPErrorResponse。解决方案是将字符串 returned 从我的服务器更改为 JSON 对象,如下所示:
router.post('/', async (req,res) => {
const body = req.body;
await database.execute(`
INSERT INTO Post (
title,
body,
date_added
) VALUES (
@title,
@body,
NOW()
)
`, {
title: body.title,
body: body.body,
})
res.end({}) // returns successfully, no error
})
我正在使用 Angular 的 HttpClient 向我的 NodeJS 服务器执行 POST 请求,如下所示:
createData(data:any):Observable<any> {
// verifying the content type is need to ensure the JSON object is sent as
// JSON object to NodeJS server
const options = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
})
};
// This still throws an HTTPResponse error, -
// SyntaxError: Unexpected token A in JSON at position 0 at JSON.parse
return this._http.post(`${this.apiUrl}`, data, options);
}
我服务器的 POST 功能是这样设置的:
router.post('/', async (req,res) => {
const body = req.body;
await database.execute(`
INSERT INTO Post (
title,
body,
date_added
) VALUES (
@title,
@body,
NOW()
)
`, {
title: body.title,
body: body.body,
})
res.end('Added post')
})
调用 createData 时,执行 POST 方法(我检查了开发工具中的网络面板,从服务器返回响应“已添加 post”,我的 json 对象作为负载发送),但控制台仍然 returns 这个 HTTPErrorResponse:
SyntaxError: JSON 中的意外标记 A 在 JSON.parse 的位置 0 () 在 XMLHttpRequest.onLoad (http://localhost:4200/vendor.js:7508:51) 在 ZoneDelegate.invokeTask (ht..
如果服务器函数已成功返回,此错误的原因可能是什么?
服务器可以 return 成功,但是回调函数 CreateData 需要从服务器 return 编辑一个 JSON 对象。因为字符串 returned 不是 JSON,所以引发了 HTTPErrorResponse。解决方案是将字符串 returned 从我的服务器更改为 JSON 对象,如下所示:
router.post('/', async (req,res) => {
const body = req.body;
await database.execute(`
INSERT INTO Post (
title,
body,
date_added
) VALUES (
@title,
@body,
NOW()
)
`, {
title: body.title,
body: body.body,
})
res.end({}) // returns successfully, no error
})