离子POST不是数据

时间:2018-02-06 01:15:22

标签: php angularjs angular post ionic-framework

我需要帮助才能从Ionic页面请求帖子 我正在尝试创建一个登录应用程序,将来我会放置一个令牌系统,所以我需要向服务器发送一个POST并返回数据,但是当我尝试发送POST时,它不会随着DATA发送而到达,PHP与$ _POST [mod_disco:register_feature]例如......
我的页面提供者

email

我的页面登录

import { Injectable } from '@angular/core';
import { Headers, Http } from '@angular/http';
import  'rxjs/add/operator/map';

let apiURL = "http://192.168.64.2/irewards/api/";

/*
  Generated class for the AuthServiceProvider provider.

  See https://angular.io/guide/dependency-injection for more info on providers
  and Angular DI.
*/
@Injectable()
export class AuthServiceProvider {

  constructor(public http: Http) {

  }

  postData(credentials, type){
    return new Promise((resolve, reject) => {
      let header = new Headers();
      console.log(JSON.stringify(credentials));
      this.http.post(apiURL + type, JSON.stringify(credentials),  { headers: header }).subscribe(res => {
        resolve(res.json());
      }, (err) => reject(err));
    });
  }

}

和我的页面PHP

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

  responseData: any;
  userData = { "email":"", "pass":"" };

  constructor(public navCtrl: NavController, public authService: AuthServiceProvider) {
  }

  ionViewDidLoad() {

  }

  openRegister(){
    this.navCtrl.push('RegisterPage');
  }

  signin(){
    this.authService.postData(this.userData, "users.class.php").then((result) => {
      this.responseData = result;
      console.log(this.responseData);
      //localStorage.setItem('userData', JSON.stringify(this.responseData));
      //this.navCtrl.push(HomePage);
    }, (err) => console.log(err));
  }

}

如果为$ _GET更改$ _POST,它会返回我需要的所有内容

2 个答案:

答案 0 :(得分:0)

这是因为http post正在Input Stream中发送数据。您无法使用$ _POST访问它。 要访问数据,您需要使用$data = file_get_contents('php://input');,然后在代码中访问$data['email']。 您的数据也可能是jsonencoded。在这种情况下,请使用$data = json_decode(file_get_contents('php://input'));

如果您想通过$ _POST访问数据,则需要向您发送内容类型为application/x-www-form-urlencoded的POST数据。

答案 1 :(得分:0)

使用import { HTTP } from '@ionic-native/http';和标题符号:var options = new RequestOptions({headers: new Headers({ 'Content-Type' : 'application/x-www-form-urlencoded', }) 发贴示例时:this.http.post(url, post, options).then((data) => ...