使用$ http.post()从angular发布到php的变量不起作用

时间:2016-02-14 09:44:16

标签: javascript php angularjs http

我使用$ http.post()方法将angularjs控制器中的变量发布到同一文件夹中的php文件中。但在php页面中,我能够检索变量。变量未定义。

这是角度代码

$scope.checkout = function(){
         $http({
         url:"checkout.php",
         method : 'POST',
         data :{
            'total':$scope.total
        },

        headers : {'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}
    }).success(function(data, status, headers, config) {
        window.location.href = 'checkout.php'
    }).error(function(data, status, headers, config) {
       console.log("not done");
});
    }

这里是php代码

<?php
$_SESSION['bill_amount'] = $_POST['total'];
echo $_SESSION['bill_amount'];
?>

但我收到的错误是总数未定义。

2 个答案:

答案 0 :(得分:1)

您正在发送数据,但Angular默认以JSON格式发送,您需要解码JSON,因此在您的php文件中使用JSON函数解码json_decode。完整代码如下:

<?php
 $data = json_decode(file_get_contents("php://input"));
 $total = $data->total; // $_POST['total'];
 $_SESSION['bill_amount'] = $total;
?>

答案 1 :(得分:1)

我找到了答案。我创建了一个名为middleware.php的中间页面,我将后期数据存储到会话变量中,成功时我将重定向到checkout.php并通过会话变量使用post值。