我无法向服务器发送 POST 请求,我的数据不会发回给我。
我有一个非常简单的PHP脚本:
服务器脚本
<?php
header('Access-Control-Allow-Origin: *');
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept");
echo json_encode("{user-id:" . $_POST["user_id"] . "}");
?>
我想对此脚本发出 POST 请求,并获取一些JSON数据作为响应。
工作请求
如果我从HTML发出POST请求,则效果非常好:
<form method="post" action="http://url/post.php">
<input type="hidden" name="user_id" value="123" />
<button>Go to user 123</button>
</form>
这也有效:
$.post( "url/post.php", this.data)
.done(function( data ) {
console.log( data );
});
响应
"{user-id:123}"
不工作的脚本(欲望):Aurelia Fetch Client(JS2016)
submit(){
let comment = { user_id: "234" };
this.http.fetch('post.php', {
method: 'post',
body: json(comment)
})
.then(response => response.json())
.then(data => console.log(data));
}
获取客户端配置
config
.useStandardConfiguration()
.withBaseUrl('url')
.withDefaults({
mode: 'cors',
headers: {
'Accept': 'application/json'
}
});
});
响应
{user-id:}
php替代
我试图在PHP中查看数组内部的内容,但是我使用implode
获得了相同的结果:
echo json_encode("{user-id:" . (string)implode(" ",$_POST) . "}");
看起来Aurelia没有以正确的方式发布数据。我在这里犯了错误,还是我不知道的配置设置?
答案 0 :(得分:2)
取代&#34; _POST [&#34; user_I&#39; d&#34;]&#34;这样做
$input = file_get_contents('php://input');
$input = json_decode($input);
//access user_id like this:
$input->{'user_id'}