使用AJAX时,PHP会话变量为空

时间:2018-07-29 05:50:47

标签: javascript php ajax session session-variables

我正在尝试制作一个简单的购物车,即使用户刷新页面或关闭选项卡并在另一个选项卡上重新访问网站,也可以将购物车项目存储在会话变量中并维护购物车中的项目。每当用户单击“添加到购物车”按钮时,就会向php文件触发AJAX发布请求,该文件会将产品信息添加到会话变量中。但是,当我刷新页面并尝试在index.php主页面上显示该会话变量时,该变量为空。每个文件的开头也有session_start();

发出AJAX发布请求的PHP文件:

<?php
session_start();

$product = NULL;
$contentType = isset($_SERVER["CONTENT_TYPE"]) ? trim($_SERVER["CONTENT_TYPE"]) : '';

if ($contentType === "application/json") {
  $content = trim(file_get_contents("php://input"));
  $product = json_decode($content, true);
}

if(is_array($product)) {
    $_SESSION["cart"] = $product["name"];
    echo json_encode(['cartinfo' => $_SESSION["cart"]]); //I console log this JSON response in the javascript file and see product info successfully
}

index.php主页:

<?php
  session_start();
  echo $_SESSION["cart"]; //This is empty

Javascript:

function add() {
  fetch("scripts/product.php", {
    method: "POST",
    headers: {
      "Content-Type": "application/json"
    },
    body: JSON.stringify({
      "name": "Shirt"
    })
  })
  .then(function(res) {
    return res.json();
  })
  .then(function(jsonRes) {
    console.log(jsonRes);
  })
  .catch(function(error) {
    console.log(error); 
  });
}

什么可能导致此问题?

0 个答案:

没有答案