Php Angular 4 HttpClient无法使用POST发送数据

Php Angular 4 HttpClient无法使用POST发送数据,php,angular,post,httpclient,Php,Angular,Post,Httpclient,角度4.4.4 这是我的应用程序组件 constructor( private http: HttpClient, ) this.http.post('/api.php', {name, age}).subscribe(data => { console.log(data); }); api.php->exit(json_encode($_POST)) 在$\u POST中未收到任何数据 返回[] (let-xmlRequest=new-XMLHttpRequest()

角度4.4.4
这是我的应用程序组件

constructor(
    private http: HttpClient,
)

this.http.post('/api.php', {name, age}).subscribe(data => {
    console.log(data);
});
api.php->exit(json_encode($_POST))

在$\u POST中未收到任何数据

返回[]

let-xmlRequest=new-XMLHttpRequest();
.... (工作正常)

我尝试设置标题

  let headers = new HttpHeaders().set('Content-Type', 'application/json; charset=UTF-8');
不行

很抱歉这个问题,但我花了1天时间,仍然找不到解决方案


另外,客户端和服务器具有相同的来源。

请尝试,我希望它能帮助您

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';
import { HttpClient } from '@angular/common/http';


@Injectable()
export class LandingService {

    private apiUrl = 'http://localhost:5000/';

  list:any;
  headers : any;
  constructor(private _http: HttpClient){
        this.headers = new Headers();
        this.headers.append('Content-Type', 'application/json');
  }
     getsearchResponse(searchText){
          this.list ={"sentences":searchText}
          return this._http.post(this.apiUrl+'searchBotsNew',this.list,this.headers)
          .map(res =>res.json())
          .do(data => console.log(JSON.stringify(data)));

      }



}

请试一试,我希望它能帮助你

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs';
import 'rxjs/add/operator/map';
import { HttpClient } from '@angular/common/http';


@Injectable()
export class LandingService {

    private apiUrl = 'http://localhost:5000/';

  list:any;
  headers : any;
  constructor(private _http: HttpClient){
        this.headers = new Headers();
        this.headers.append('Content-Type', 'application/json');
  }
     getsearchResponse(searchText){
          this.list ={"sentences":searchText}
          return this._http.post(this.apiUrl+'searchBotsNew',this.list,this.headers)
          .map(res =>res.json())
          .do(data => console.log(JSON.stringify(data)));

      }



}

我找到了解决办法

在PHP中,
$\u POST
仅接受formdata

使用请求头“Content Type:application/json”,您可以通过
file\u get\u contents('php://input');

所以


我找到了解决办法

在PHP中,
$\u POST
仅接受formdata

使用请求头“Content Type:application/json”,您可以通过
file\u get\u contents('php://input');

所以


您需要将参数放入角度一侧的FormData对象中

const params = new FormData();
params.append('para1', 'value1');
params.append('para2', 'value1');
this.http.post('/api.php', params).subscribe(....)
现在,您可以使用$\u POST['para1']和$\u POST['para2']获取项目PHP部分的参数


我更喜欢这个解决方案,而不是用文件内容获取所有内容,因为它看起来更直观。

您需要将参数放在角度一侧的FormData对象中

const params = new FormData();
params.append('para1', 'value1');
params.append('para2', 'value1');
this.http.post('/api.php', params).subscribe(....)
现在,您可以使用$\u POST['para1']和$\u POST['para2']获取项目PHP部分的参数


我更喜欢这个解决方案,而不是用文件内容获取所有内容,因为它对我来说更直接。

请发布你的PHP方法出口(json编码($\u post))我是说,你的签名,你的方法完整请发布你的PHP方法出口(json编码($\u post))我是说,你的签名,您的方法是否在app.module.ts文件中完全导入了HttpClientModule?是的,我导入了。请求发送但服务器未接收数据您是否使用php后端?是否在app.module.ts文件中导入HttpClientModule?是的。请求发送但服务器未接收数据您是否使用php后端?