Javascript 如何将json数组从angularjs控制器发布到php页面
我使用了$http.post()方法。这是密码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'}
$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不是持久的。