ajax post后重定向到页面。然后从$ _SESSION:session访问值为空

时间:2014-05-16 17:25:58

标签: php jquery session

我通过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);

我在哪里做错了?

2 个答案:

答案 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
}

现在这很好用。