通过Ajax将Javascript对象存储在$_SESSION中.数组与JSON字符串


Store Javascript object in $_SESSION by Ajax. Array vs JSON string

我正在发送一个Ajax请求,该请求将对象objectVariable发送到PHP文件:

$.post(url, {action : 'function' , object : objectVariable });

然后,PHP文件将把objectVariable存储在$_SESSION['objectVariable']中(为了清楚起见,我省略了验证):

function function_callback() {
    if(!session_id()) 
        session_start();
    $_SESSION['objectVariable'] = $_POST['objectVariable'];
}

当用户转到网站的其他页面时,$_SESSION['objectVariable']将再次通过Ajax从PHP发送给用户。在这里,我应该将存储在$_SESSION['objectVariable']中的数组编码为JSON字符串:

//inside other Axax callback function
echo json_encode($_SESSION['objectVariable']);

这是正确的,但我也可以将JSON字符串存储到$_SESSION['objectVariable']:中

function function_callback() {
    if(!session_id()) 
        session_start();
    $_SESSION['objectVariable'] = json_encode($_POST['objectVariable']);
}

然后,只需echo $_SESSION['objectVariable']将其发送到Javascript文件。

我想知道有什么更好的方法:将数组存储在$_SESSION['objectVariable']中,或者存储JSON字符串。

有什么建议吗?

在Javascript/PHP之间发送数据时,我总是将其编码为JSON字符串。它使事情变得更简单。事实上,当你第一次把它发送到服务器时,我会立即JSON.stringify()

通过这种方式,您也将始终知道数据的类型。