我通过jquery post将3个数据数组发布到服务器上的php文件(checkout.php)。
$.post("checkout.php", {items_name : JSON.stringify(items_name), items_price : JSON.stringify(items_price), items_amount : JSON.stringify(items_amount)}, function(data){
console.log(data);
//those three are arrays(items_name, items_price & items_amount
});
window.location.href = "checkout.php";
然后我在checkout.php中收到数据数组并将它们存储在$ _SESSION中。
$items_name = json_decode($_POST['items_name']);
$items_price = json_decode($_POST['items_price']);
$items_amount = json_decode($_POST['items_amount']);
session_start();
$_SESSION['items_name'] = $items_name;
$_SESSION['items_price'] = $items_price;
$_SESSION['items_amount'] = $items_amount;
当页面在发出jquery帖子后重定向到checkout.php时,当我尝试从session访问数据时,它没有显示任何内容。
session_start();
print_r($_SESSION);
我在哪里做错了?
答案 0 :(得分:1)
jQuery post
调用是异步执行的,因此您的代码会立即继续执行重定向,而无需等待php脚本在服务器上完成。将重定向添加到post
的成功/完整回调中。
$.post("checkout.php", {items_name : JSON.stringify(items_name), items_price : JSON.stringify(items_price), items_amount : JSON.stringify(items_amount)}, function(data){
// whatever
window.location.href = "checkout.php";
});
答案 1 :(得分:0)
检查是否只设置了$ _POST,不起作用。但要使它更具体。
if(isset($_POST['items_name'])){
//Code here
}
现在这很好用。