(PHP)如何从HttpClient获取对象(Angular 6)

时间:2018-06-16 19:01:48

标签: php angular angular-httpclient

Angular 6:

import {Injectable} from '@angular/core';
import { HttpClient } from '@angular/common/http';

@Injectable()
export class GetData {
    constructor( private http: HttpClient ) { }
    post( ) {
      data = [ {username : 'test',password : '1234' }];
      return this.http.post('login.php' , data );
    }
}

PHP:login.php

<?php

$username = $_POST['username'];
$password = $_POST['password'];

?>

如何将Angular 6中的[Object]数据导入$ username,$ password

**

  

“$ _ POST”和“$ _REQUEST”不适用于我。

**

2 个答案:

答案 0 :(得分:0)

尝试一下:

import {Injectable} from '@angular/core';
import { HttpClient,HttpParams  } from '@angular/common/http';

@Injectable()
export class GetData {
    constructor( private http: HttpClient ) { }
    post( ) {
     let data= new HttpParams()
    .append("username", "test")
    .append("password", "1234")


      return this.http.post('login.php' , data );
    }
}

答案 1 :(得分:0)

由于某种原因,Angular似乎发送以php://input而不是$_POST结尾的POST,然后您可以json_decode将它们变成对象并使用它们。

在Angular方面-我只是在服务器上扔数据,我不在乎响应...试图在没有整个subscribe()的情况下使响应继续进行,但是对我来说根本不发布到那时...请注意,在其中的TS文件/组件/类的构造函数中有一个private http: Http

postChatMessage(room: string, user: string, msg: string, timestamp: number) {
    var cmsg = new ChatMessage(room, msg, user, timestamp);
    return this.http.post(BASEURL + "/chat", cmsg)
        .subscribe(
        (v) => {},
        response => {},
        () => {}
        );
}

后端的PHP处理发送的POST-是的,我很懒,只是存储了发送的整个JSON字符串以及其他一些信息,但是对于我来说,学起来比较容易-

if (($_SERVER['REQUEST_METHOD'] == "POST") &&
        (strpos($_SERVER['REQUEST_URI'], "/json_service/chat") === 0)) {
    $d = file_get_contents("php://input");
    $d = json_decode($d);
    $d->timestamp = time();
    $q = "insert into json_chat values(?,?,?,?)";
    $a = array(null, time(), $d->room, json_encode($d));
    $res = executeQuery($q, $a);
    print(json_encode(array($res[0])));  // boolean fwiw
    exit;
}