【问题标题】:Nodejs returns undefined for Angular 2 requestNodejs为Angular 2请求返回未定义
【发布时间】:2017-07-14 20:51:42
【问题描述】:

我想使用 http.post 方法将 Ionic 2 应用程序中的数据发布到服务器,但服务器返回 undefined。

我曾尝试发送一次字符串,但结果是一样的。

这是 Angular 2 客户端代码:

  import { Component } from '@angular/core';
  import { NavController, NavParams } from 'ionic-angular';
  import { RegisterPage } from '../register/register';
  import { Http, Headers } from '@angular/http';
  import { ToastController } from 'ionic-angular';
  import { User } from '../../providers/user';

  @Component({
    selector: 'page-login',
    templateUrl: 'login.html'
  })
  export class LoginPage {

  private accounts: Object[] = []
  private headers: Headers;

  private http;

  private toast;

  public email;
  public password;

  public user: User;

  constructor(public navCtrl: NavController, public navParams: NavParams, 
    http: Http, public toastCtrl: ToastController) {

   this.http = http;
   this.toast = toastCtrl;
  }

  ngAfterViewInit() {

  }

  toastMessenger(res : string) {
    let toast = this.toast.create({
      message: res,
      duration: 3000
    });

    toast.present();
  }

  submit() {
    let headers = new Headers();
    headers.append("Content-Type", 'application/json');

    console.log(this.email)

    this.http.post('http://localhost:3000/validation', JSON.stringify(this.email), { headers: headers })
    .subscribe(() => {
      console.log("Dados enviados com sucesso");
    });
}

  changeToRegister() {
   this.navCtrl.push(RegisterPage);
  }
}

这是我的后置动词路线:

  app.post('/validation', function(req, res) {
     console.log(req.body); // => undefined
  });

【问题讨论】:

  • 您的console.log(this.email) 返回什么?据我从上面的代码中可以看出,您实际上从未设置过this.email,所以它会像您所看到的那样发布undefined
  • "this.email" 返回用户输入: (input)="email = $event.target.value"
  • @YagoAzedias 检查 req.query 部分
  • 你能发送来自其他客户端的请求吗?
  • 使用 "req.query" 服务器返回一个 void javascript 对象 => { }

标签: node.js angular typescript ionic2


【解决方案1】:

我终于得到了错误。我在设置正文解析器之前导入了路由。

  // config/express.js
  consign()
   .include('infra')
   .then('app/routes')
   .into(app);

   app.use(bodyParser.json());                                                                                                                
   app.use(bodyParser.urlencoded({extended: true}));  

当一个 set 解决这个问题时,服务器返回我想要的 json 对象

  // config/express.js
   app.use(bodyParser.json());                                                                                                                
   app.use(bodyParser.urlencoded({extended: true}));  

   consign()
     include('infra')
     .then('app/routes')
     .into(app);

感谢大家的帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 2017-01-08
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 2018-03-22
    • 2018-08-09
    相关资源
    最近更新 更多