Mik*_*oud 1 html javascript php angularjs flightphp
我有一个PHP应用程序,它使用AngularJS作为客户端,FlightPHP用于REST服务,PHP用于后端.
但是,即使我在POST这里发布了这个代码:
$scope.registerUser = function() {
$http({
method: 'POST',
url: '/user/register',
data: $scope.user
}).success(function(data) {
if (data.result === undefined) {
setAjaxMessage(data, false);
return;
}
if (data.result === 0) {
setAjaxMessage(data.message, true);
}
else {
setAjaxMessage(data.message, false);
}
}).error(function(data) {
setAjaxMessage(data, false);
});
};
Run Code Online (Sandbox Code Playgroud)
而我得到了成功POST与通过Firefox的消息Params -> Request payload设置为这个数据标签:
{"displayname":"user1","email":"user1@gmail.com","password":"abc123"}
Run Code Online (Sandbox Code Playgroud)
当我发出这个服务器端时:
Flight::route('POST /user/register', function() {
echo var_dump($_POST);
return;
// register the user
require 'core/register.php';
});
Run Code Online (Sandbox Code Playgroud)
我明白了:
array (size=0)
empty
Run Code Online (Sandbox Code Playgroud)
什么给这里?我之前从未遇到过$_POST数据问题.我觉得它与FlightPHP有关,但我不能把手指放在它上面.POST正如您所见,它正在进入处理程序.
如果您没有发布表单编码的查询字符串(如原始JSON的情况),则需要从PHP的原始输入中获取数据.以下是如何将JSON数据读入适当的PHP数据结构:
$post_data = json_decode(file_get_contents('php://input'));
Run Code Online (Sandbox Code Playgroud)
您还应该如下显式设置Content-type标头:
$http({
method: 'POST',
url: '/user/register',
data: $scope.user,
headers: {'Content-Type': 'application/json'}
}).success(function(data) {
// rest of your code
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1053 次 |
| 最近记录: |