我使用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服务器,则一切正常,并且确实得到了等待的响应。
希望一切都清楚了! 预先感谢。