Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用$http.post()从angular发布到php的变量无效_Javascript_Php_Angularjs_Http - Fatal编程技术网

Javascript 使用$http.post()从angular发布到php的变量无效

Javascript 使用$http.post()从angular发布到php的变量无效,javascript,php,angularjs,http,Javascript,Php,Angularjs,Http,我使用$http.post()方法将angularjs控制器中的变量发布到同一文件夹中的php文件中。但是在php页面中,我能够检索变量。变量未定义 这是角度代码 $scope.checkout = function(){ $http({ url:"checkout.php", method : 'POST', data :{ 'total':$scope.total },

我使用$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'];
?>


但是我得到的错误是total未定义。

您正在发送数据,但默认情况下以
JSON
格式发送数据,您需要解码JSON,因此在php文件中使用
JSON\u decode
函数解码
JSON
。完整代码如下所示:

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


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

否它不起作用。.试图获取非对象的属性时出现错误…请参见成功后,我重定向到该页面时的$http.post()重定向后无效