如何通过PHP中的http访问从AngularJS传递的变量?

时间:2017-07-23 20:18:56

标签: php angularjs

我将一个对象传递给这样的PHP脚本:

$http({
    method: 'POST',
    url: 'updateCoins.php',
    data: {flips: $scope.data.flips, error: $scope.data.pe},
})

在我的PHP脚本中,我尝试过:

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

$data = json_decode(file_get_contents("php://input"));

然后我尝试回复收到的值,如下所示:

echo $data.flips

echo $data[flips]

echo $data->flips

我继续得到一个空白的结果或“翻转”这个词。如何访问这些变量?

2 个答案:

答案 0 :(得分:2)

如果数据是通过JSON编码发送的,那么json_decode()就有意义了。我怀疑您的数据是x-www-form-urlencoded(例如: name = john& age = 7 )。在这种情况下,PHP会将它解析为$_POST数组。如果您希望自己完成,并处理任何一种情况,您可以执行以下操作:

// Read content-type to determine whether it's JSON data
$type = $_SERVER["CONTENT_TYPE"];
$content = file_get_contents('php://input');

if(strpos($type,'json') > -1):
    $data = json_decode($content, true);
else:
    parse_str($content, $data);
endif;

print_r($data);

您始终可以使用echo file_get_contents('php://input');

直观地检查数据

答案 1 :(得分:1)

如果帖子是用json格式化的,Php不会从$ _POST中获取发布的数据。您可以序列化发布数据并进行提交

var data = 'flips='+$scope.data.flips+'&error='+$scope.data.pe;

$http({
    method: 'POST',
    url: 'updateCoins.php',
    headers: {'Content-Type': 'application/x-www-form-urlencoded'},
    data: data
});

或者你可以像BeetleJuice推荐的那样做。在我的应用程序中,我只是执行以下操作,以便其余代码不会中断。

if (empty($_POST) && file_get_contents('php://input')!==""){
    $_POST = json_decode(file_get_contents('php://input'), true);
}

此时您可以使用$_POST['flips']$_POST['error']

访问它