Как передать данные с углового на узел js сервер? - PullRequest
0 голосов
/ 18 мая 2018

Мой 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: Неожиданный токен e в JSON в позиции 2

Я использую

req.body

для получения данных.Как правильно проанализировать данные JSON?Также хотел бы знать, если это правильный способ передачи данных формы из углового узла?

Ответы [ 4 ]

0 голосов
/ 18 мая 2018

С Angular 6 HttpClient вам не нужно структурировать ваш объект ( см. Пример POST из официального документа ).Таким же образом, для запроса 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}`) }
0 голосов
/ 18 мая 2018
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() {

            });
0 голосов
/ 18 мая 2018
var user = { 
    email: this.email, 
    password: this.password 
}
...
this.http.post('http://localhost:3000/signin',user).subscribe(...)
0 голосов
/ 18 мая 2018

Сначала я подумал, что вы используете объект для пользователя, чем пила, это строка.Ваши данные не в правильном формате 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 => {

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...