如何将数据从角度传递到节点js服务器?

时间:2018-05-18 07:41:21

标签: node.js angular

我的app.component.ts包含

login() {
    var user = `{ email: ${this.email}, password: ${this.password} }`
    const headers = new HttpHeaders()
                    .set('Authorization', 'my-auth-token')
                    .set('Content-Type', 'application/json');
    this.http.post('http://localhost:3000/signin', user, {
          headers: headers 
    }).subscribe(data => {

   });
   console.log(`email: ${this.email} password: ${this.password}`) 
}

尝试获取节点中的数据时

  

错误:SyntaxError:位置2的JSON中出现意外的标记e

我正在使用

  

req.body

获取数据。 解析JSON数据的正确方法是什么?还想知道这是否是将表单数据从角度传递到节点的正确方法?

4 个答案:

答案 0 :(得分:2)

var user = { 
    email: this.email, 
    password: this.password 
}
...
this.http.post('http://localhost:3000/signin',user).subscribe(...)

答案 1 :(得分:1)

user= {
   email: aka@gmail.com,
   password: 123,
    }               
            $http({
                method: "POST",
                url: http://localhost:3000/signin,
                data: JSON.stringify(user),
                headers: headers 
            }).success(function(data) {
               // you can print data hera
                }
            }).error(function() {

            });

答案 2 :(得分:1)

使用Angular 6 HttpClient,您不需要对对象进行字符串化(see POST example from official doc)。同样,对于GET请求,HttpClient会为您解析json数据。

试试这个:

login() {
   const user = { email: this.email, password: this.password };

   const headers = new HttpHeaders({
      'Authorization': 'my-auth-token',
      'Content-Type': 'application/json'
   });

   this.http.post('http://localhost:3000/signin', user, {
     headers: headers 
   }).subscribe(data => {});
 console.log(`email: ${this.email} password: ${this.password}`) }

答案 3 :(得分:0)

首先我认为你为用户使用了一个对象,而不是看到它是一个字符串。 您的数据没有正确的json格式。 尝试在字段名称

上加上引号
var user = `{ "email": ${this.email}, "password": ${this.password} }`

错误!

  

您应该对数据进行字符串化 - JSON.stringify(user)

this.http.post('http://localhost:3000/signin', JSON.stringify(user), {
  headers: headers 
}).subscribe(data => {

});