如何将一个json数组从angularjs控制器发布到php页面

时间:2016-02-13 12:47:02

标签: javascript php html angularjs json

我使用$ http.post()方法。这是代码

$scope.checkout = function(){
         $http({
        url:"checkout.php",
        data : $.param($scope.orders),
        method : 'POST',
        headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
    }).success(function(data, status, headers, config) {
        $scope.sdata = data;
    }).error(function(data, status, headers, config) {
        $scope.status = status;
});
    }

我的json数组存储在$ scope.orders中,我想发布到同一文件夹中的checkout.php。

在php页面中,我的代码是

<?php
$data = file_get_contents("php://input");
    $postData = json_decode($data);
    foreach ($postData as $post) {
    echo $post->name;
    echo "<br>";
    echo $post->price;
    echo "<br>";
    echo $post->quantity;
    echo "<br>";
    echo "<br>";
}
?>

但它不起作用。

请告诉我如何重定向到checkout.php。基本上我是在点击按钮上发布这些数据,我想在发布数据后重定向到checkout.php。

1 个答案:

答案 0 :(得分:0)

您的php希望将数据作为内容类型application/json发送,这是$http的默认值。

但是,您要将默认内容类型更改为application/x-www-form-urlencoded

如果您希望$http保持不变,则需要使用$_POST而不是file_get_contents()

如果您希望php保持不变,则需要从$http中删除内容类型标头,而不是使用$.param来序列化数据。

另请注意,如果要在ajax之后重定向到checkout.php,重定向将不包含帖子数据,因此您需要将其存储在会话中以使其工作。否则你可能根本不需要$http,只需使用浏览器提交表单而不是截取以发送$http