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

Javascript 如何将json数组从angularjs控制器发布到php页面,javascript,php,html,angularjs,json,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'}

我使用了$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。

您的php希望数据以内容类型
应用程序/json
发送,这是
$http
的默认值

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

如果希望
$http
保持不变,则需要使用
$\u POST
而不是
文件\u get\u contents()

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


还要注意的是,如果您想在ajax之后重定向到
checkout.php
,那么重定向将不包含post数据,因此您需要将其存储在会话中才能实现。否则,您可能根本不需要
$http
,只需要使用浏览器提交表单,而不需要截取发送
$http

对不起,我是新来的。您能告诉我如何在js文件中使用会话变量吗?因为控制器代码在单独的js文件中。我指的会话是服务器会话。每次调用该
checkout.php
时,它都是一个新实例,因此如果重定向到该实例,数据将不存在,但如果使用默认浏览器进程提交表单,则数据将不存在。我可以使用angular services跨多个页面使用变量吗?不加载新页面,javascript不是持久的。