我正在尝试使用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数据但没有成功。
我做错了什么?
由于
修改:
编辑2:
使用put时,数据是检索服务器端。这是一个有角度2 POST
的问题答案 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);