Angular 2发送空帖

时间:2017-01-30 15:18:10

标签: javascript php json angular

我正在尝试使用POST请求将数据从我的应用程序发送到服务器,但我的服务器收到空POST。

这是发送功能:

private headers = new Headers({'Content-Type': 'application/json'});

postCharacter(mule: Mule): Promise<Mule> {

    return this.http.post(
            "http://www.super-secret-url.com/testPost.php", 
            { data: mule }, 
            { headers: this.headers }
        )
        .toPromise()
        .then(response => response.json() as any)
        .catch(this.handleError);
}

(非常)简单的PHP脚本:

 <?
    header('Content-Type: application/json');

    echo json_encode($_POST);
 ?>

请求有效负载(从chrome开发人员控制台发送的数据):

{
  "data": {
    "ID": "1",
    "Name": "John",
    "Class": "Adventurer",
    "Items": [
      "641",
      "642",
      "643",
      "513",
      "512"
    ]
  }
}

php脚本返回空Json:[]

我尝试了JSON.stringify数据但没有成功。

我做错了什么?

由于

修改:

以下是开发者控制台的屏幕截图: enter image description here

编辑2:

使用put时,数据是检索服务器端。这是一个有角度2 POST

的问题

2 个答案:

答案 0 :(得分:0)

尝试将代码更新为此

可能是个问题
      postCharacter(mule: Mule): Promise<Mule> {
      let headers = new Headers(this.headers);
      let options = new RequestOptions({ headers: headers });
      return this.http.post(
              "http://www.super-secret-url.com/testPost.php",mule,options  
          )
          .toPromise()
          .then(response => response.json() as any)
          .catch(this.handleError);
  }

答案 1 :(得分:0)

这样的事情最终对我有用:

postCharacter(mule: Mule): Promise<Mule> {

return this.http.post(
        "http://www.super-secret-url.com/testPost.php", 
        mule, 
        { headers: this.headers }
    )
    .toPromise()
    .then(response => response.json() as any)
    .catch(this.handleError);
}

服务器不会收到数组

使用

在服务器上解码它

$_POST = json_decode(file_get_contents('php://input'), true);