我使用$ 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。
答案 0 :(得分:0)
您的php希望将数据作为内容类型application/json
发送,这是$http
的默认值。
但是,您要将默认内容类型更改为application/x-www-form-urlencoded
如果您希望$http
保持不变,则需要使用$_POST
而不是file_get_contents()
如果您希望php保持不变,则需要从$http
中删除内容类型标头,而不是使用$.param
来序列化数据。
另请注意,如果要在ajax之后重定向到checkout.php
,重定向将不包含帖子数据,因此您需要将其存储在会话中以使其工作。否则你可能根本不需要$http
,只需使用浏览器提交表单而不是截取以发送$http