Ionic 3 Post Request

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ionic 3 Post Request相关的知识,希望对你有一定的参考价值。

我想将我的register.html和我的register.ts文件链接在一起,以便向我的后端发送帖子请求。我正在创建一个寄存器屏幕,它将信息发送到我的数据库(mongoDB / Node)

我开始使用[{ngModel}],如下例所示:

 <form id="signup-form3">
    <ion-list id="signup-list2">
      <ion-item id="signup-input6">
        <ion-label>
          email
        </ion-label>
        <ion-input type="email" name="email" [(ngModel)]="email" placeholder="Email"></ion-input>
</ion-item>

但是仍然收到错误:'无法绑定到'{ngModel}',因为它不是'ion-input'的已知属性。这是在我将所有必要的导入到我的app.module.ts之后。

在我的TS文件中,我正在使用...发送帖子请求

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

    let body = {
      email: "this.email",
      password: "this.password"
    };

    this.http.post('http://localhost:3005/v1/account/register', JSON.stringify(body), {headers: headers})
      .map(res => res.json())
      .subscribe(data => {
        console.log(data);
      });
  }

不确定是否有一种更简单的方法可以解决它,或者我是否以错误的方式使用ngModel。

编辑:修正[(ngModel)]拼写错误。现在给我错误......

“具有给定用户名的用户已经注册” - 我认为它正在向数据库发送“this.email” - 虽然我在控制台登出时会显示该电子邮件。这是JSON.stringify的问题吗?

编辑2:现在从我的后端收到错误:'错误:发送后无法设置标题。

答案

问题是它不是[{ngModel}],它是[(ngModel)]。那应该解决这个问题。

编辑:

""this.email身上移除this.password,应该是这样的:

let body = {
  email: this.email,
  password: this.password
};
另一答案

好的,我在@ChesterLaborde的帮助下发现了这个问题

我不得不拿出.map(res => res.json())

正如@ChesterLaborde提到的那样取出Stringify - 我相信这是因为我已经把它变成了JSON,而.map(res => res.json())试图再次这样做。我相信这是问题的根源,至少对我有用。

以上是关于Ionic 3 Post Request的主要内容,如果未能解决你的问题,请参考以下文章

推进学说代码片段

ionic使用常见问题——PHP无法获取$http的post数据

HTTP POST 请求 Ionic 3 给出 403 禁止

discuz X3.1 源代码阅读,记录代码片段

POST 请求在 IONIC 应用程序中的 iOS 设备上不起作用

QT QHttpMultiPart上传图片