繁体   English   中英

离子POST不数据

[英]Ionic POST not data

我需要帮助来从Ionic页面请求帖子,我正在尝试制作一个登录应用程序,将来我将放置一个Token系统,因此我需要将POST发送到服务器并返回数据,但是当我尝试发送时POST,它不会与发送的数据一起到达,例如,PHP带有$ _POST [ 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));
    });
  }

}

我的页面登录

@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));
  }

}

和我的页面PHP

<?php
header("Access-Control-Allow-Origin: *");
header('Content-Type: text/html; charset=utf-8');

include 'connect.pdo.class.php';

$objConn = new Connect();
$conn = $objConn->getInstance();

function loginUser($email, $pass){
  $users = $conn->prepare("SELECT * FROM `users` WHERE `email` = ? AND `pass` = ?");
  $users->execute(array($email, $pass));
  echo json_encode($users->fetch(PDO::FETCH_ASSOC));
}

if(isset($_POST['email']) && isset($_POST['pass'])){
  $email = $_POST['email'];
  $pass = $_POST['pass'];

  loginUser($email, $pass);
}
?>

如果将$ _POST更改为$ _POST,它将返回我需要的一切

这是因为http帖子正在输入流中发送数据。 您无法使用$ _POST访问它。 要访问数据,您需要使用$data = file_get_contents('php://input'); 然后可以在您的代码中访问$data['email'] 您的数据也可能经过json编码。 在这种情况下,请使用$data = json_decode(file_get_contents('php://input'));

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

使用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) => ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM