如何将json对象从javascript保存到php会话变量


How i can to save a json object from javascript to a php session variable?

Hi我需要一些关于如何将json对象存储到php会话变量的示例。json对象如下:

var jsonObject={ "menu":
                         {
                            "intro":{
                                       "intosub":"sub_1"
                                     }
                              "vis":{
                                      "visub":"sub_2"
                                     }

}

关于

根据您给我们的信息,您的json对象是错误的。应该是:

var jsonObject={
    "menu":
    {
        "intro":{
            "intosub":"sub_1"
        },
        "vis":{
            "visub":"sub_2"
        }
    }
};

编辑

var jsonObject={ "menu": { "intro":{ "intosub":"sub_1" }, "vis":{ "visub":"sub_2" } }
var string=JSON.stringify(jsonobject);
var phpcode="<?php $_SESSION["jsonObject"]= " phpcode+=string+"?>";

当PHP是服务器端时,Javascript是客户端。这意味着,当您使用javascript创建对象时,您不能再与服务器交互,除非您使用Ajax,该Ajax允许将客户端数据传输到服务器,然后在必要时再次将其发送到客户端。

您对var phpcode="<?php $_SESSION["jsonObject"]= " phpcode+=string+"?>"所做的是,在服务器发送到客户端之前,您要求服务器用…填充您的"phpcode"JS变量。。。我真的不明白你在这里尝试了什么来设置会话变量,但如果你试图用json对象设置PHP会话变量,那就和你在不使用JS的情况下直接设置PHP会话变数一样
然而,我想您想用使用JS创建的动态数据来填充会话变量,否则您的问题将毫无意义
你需要理解的是,当你用javascript编写<?php stuff; ?>时,当它被发送到客户端时,就好像你直接用javascript写东西一样。它完成了,不会改变,当然也不会与服务器通信
例如:var math=<?php echo 10+1;?>;与您直接在JS中编写var math=11;相同。当然,您可以使用PHP将PHP内容插入到JS中,但一旦完成并发送到客户端,就可以使用Ajax来改变这一点。

您需要做的是获取json对象并使用Ajax将其发送到PHP
我看到您正在使用Jquery,所以这是关于Ajax的Jquery文档>https://api.jquery.com/jQuery.ajax/

这看起来像:

$.ajax({
    type:'post',
    url:'path/to/a/PHP/file',
    data:{jsonobject:yourstringifyjsonobject}
});

您将在您的"路径/to/PHP/文件"中使用$_POST["jsonobject"]检索该"jsonobject",然后开始:

session_start();//to not forget if you want session variables to work
$_SESSION['whatever']=json_decode($_POST['jsonobject'])

会话变量是用json对象设置的。