使用this.http.post()。then(data => {})时,数据为空

时间:2018-11-14 20:34:04

标签: javascript json typescript ionic-framework

我使用Ionic v3,尝试将JSON数据发布到PHP Web服务器,对其进行处理,然后将结果发送到Ionic应用程序。这就是我的方法:

postData() {
//console.log(JSON.stringify(this.infos));
//console.log(typeof this.infos);

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

this.http.post('MYURL', JSON.stringify(this.infos), options)
  .then(data => {

    console.log(data.status);
    console.log(data.data); // data received by server
    console.log(data.headers);

  })
  .catch(error => {

    console.log(error.status);
    console.log(error.error); // error message as string
    console.log(error.headers);

  });
}

发布应用程序中的表单时,将调用postData()函数。

这是我的PHP代码:

<?php
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');

$postdata = file_get_contents("php://input");

/*if (isset($postdata)) {
  $pde = json_decode($postdata, true);
  echo json_encode($pde);
} else {*/
  $array = array(
    array(
      'test_key' => 'test_value'
    ),
    'test_key2' => 'test_value2',
    array()
  );

  echo json_encode($array);
//}

从现在开始,如您所见,我只是想使其发挥作用,所以值只是胡说八道。

当我使用ionic cordova run android -l -c -s --debug启动所有内容时,将该应用程序与应用程序一起发布到手机上,然后查看终端正在打印什么,数据值将为空。

如果我取消注释行//console.log(JSON.stringify(this.infos)); ,我会得到表单发布的所有信息,因此问题出在this.http.post部分。

我不明白为什么没有错误,但是一切都为空(data.status,data.data和data.headers)。如果我尝试通过linux终端上的curl手动将其发送到Web服务器,则一切正常,并且确实得到了等待的响应。

希望一切都清楚了! 预先感谢。

0 个答案:

没有答案