Angular2 HTTP POST发生错误SyntaxError:JSON输入意外结束
Posted
技术标签:
【中文标题】Angular2 HTTP POST发生错误SyntaxError:JSON输入意外结束【英文标题】:Angular2 HTTP POST An error occurred SyntaxError: Unexpected end of JSON input 【发布时间】:2017-02-18 16:47:18 【问题描述】:我有错误同时 angular2 将休息数据发布到 NodeJS 后端。
我看到 POST 已完成,服务器 LOG 正确数据,但浏览器上显示错误。
发生错误: SyntaxError: JSON.parse: JSON 数据的第 1 行第 1 列的数据意外结束
我的 NG2 呼叫和服务:
onSubmit(form:FormGroup)
let userform: FormGroup = form.value;
console.log("userform: ", userform);
if (form.valid)
console.log(form.value);
this.appService.signIn(userform)
.subscribe(form => console.log('subscribe: ', form))
else
console.log("Form is not VALID!");
服务:
signIn(dataUser: Object): Observable<User>
dataUser = JSON.stringify(dataUser);
debugger;
let headers = new Headers(
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': 'http://127.0.0.1:3005'
);
let options = new RequestOptions( headers: headers );
console.log("data: ", dataUser, "\nHeaders: ", headers);
return this.http
.post( this.signInUrl, dataUser, options)
.map( (res:Response) => res.json().data || as User )
.catch(this.handleError);
和nodeJS:
app.post('/login', function (req, res)
console.log("Recived login request!");
console.log("Request: ", req.body);
res.header(
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET,PUT,POST,DELETE',
'Accept': 'q=0.8;application/json;q=0.9'
)
res.end();
);
在帖子中我们有:""username":"username","password":"password""。
我做错了什么?请寻求帮助或解决方案。
【问题讨论】:
【参考方案1】:哇。那是我的错,请注意您的 NodeJS 服务器响应。获得 POST 后,应发送任何 res.json(status: "OK")
或类似的东西,以获得响应。这个错误不是因为Angular2,而是因为NodeJS。浏览器从 nodeJS 得到空响应,或者不是 JSON 格式。
【讨论】:
以上是关于Angular2 HTTP POST发生错误SyntaxError:JSON输入意外结束的主要内容,如果未能解决你的问题,请参考以下文章
从Angular2应用程序发送http post请求时如何启用CORS
Angular2 http.post 和未定义的 req.body
angular2 http.post 方法抛出 typeerror 异常