经过一周的反复试验和大量阅读后,我仍然无法正常工作。
我想做的事:
我有一个包含24个产品页面的网站。每个产品都有“经典”或“现代”两种形式。每个页面都有一个可单击的按钮,可在一个页面和另一个页面之间切换(本质上显示一个不同的img)。如果用户单击以查看“ moderne”中的产品A,然后转到产品B,我希望他们直接查看“ moderne”版本,而不必再次单击(默认显示为“经典”)。我认为SESSION正是我所需要的。
我的代码(我在两页顶部都使用session_start()):

产品A页:

<?php
$_SESSION["collection"] = "";

?>

<script>
function ClasstoMod(){
        $(".classique, .moderne").toggle(); // toggles the images, it's working
        }
</script>
<script>
$(document).ready(function() {

$( "#display-moderne" ).click(function() {
        request =
            $.ajax({
                url: "classtomod.php",
                type: "post",
                data: 'moderne'
                });
        // callback handler that will be called on success
        request.done(function (response, textStatus, jqXHR){
        // log a message to the console
        console.log("Hooray, it worked!");      });
        // callback handler that will be called on failure
        request.fail(function (jqXHR, textStatus, errorThrown){
        // log the error to the console
        console.error(              "The following error occured: "+                textStatus, errorThrown             );          }); });
});
</script>
<html>
<div id="display-moderne" class="classique" href="#" onclick="ClasstoMod();">Check out the new Moderne Line!</div>
    <div id="display-classique" style="display:none;" class="moderne" href="#" onclick="ClasstoMod();">Return to our Classique Line!</div>
</html>


classtomod.php

<?php
$_SESSION['collection'] = $_POST['data'];

?>


在产品B页面上,现在我仅尝试回显正确的“集合”,我将在JS上进行工作以稍后显示正确的图像!

<?php
echo "Collection = " .$_SESSION['collection'];
?>


控制台日志成功,但是页面B上的回显未回显新的SESSION。
如果我如图所示运行它,它将简单地回显“ Collection =”
如果我在页面A上定义$ _SESSION ['collection'] =“ test”,则页面B会按预期回显“ Collection = test”,因此该部分正常工作。
我想要的是,在单击#display-moderne之后,页面B会回显“ Collection = moderne”

我想我很亲密,任何帮助都感激不尽!

最佳答案

您在AJAX调用中缺少POST参数的名称。它应该是:

data: { data: 'moderne'}


要么

data: 'data=moderne'

关于javascript - 使用AJAX设置PHP session 不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36487215/

10-09 22:15