如何在PHP会话中存储javascript数组


How to store a javascript array in PHP session?

我的javascript函数中有一个数组,其字符串值如1,2,3,4...等。我想将此数组存储在 PHP 的会话中。我搜索了它,他们说使用 JSON,但我正在了解如何使用 JSON。

假设我的数组名称是:myArray我想做这样的事情:$_SESSION['myArray'] = myArray;

有没有办法这样做?如果可能,请提供一些工作代码示例。

你的 JavaScript 在客户端上运行,你的 PHP 在服务器上运行。您需要通过 HTTP 发送数据。

要从 JavaScript 数组获取数据到 PHP 会话,您需要:

  1. 将数据序列化(序列化为窗体中的输入集合或字符串)。JSON 对象可以帮助解决后者,只要您没有 JSON 不支持的数据类型)。
  2. 将数据发送到PHP(通过提交表单或使用Ajax)
  3. 在PHP中读回数据(可能来自$_POST
  4. (可选)将其反序列化回数据结构
  5. 将其存放在$_SESSION

JSON 对象编码为 php(关联)数组的方法是使用:json_encode(JS_OBJECT_WHICH_IS_STRINGIFIED) 。要解码 JSON 对象,请使用 json_decode(PHP_ASSOC_ARRAY)

例如:

$arr = json_encode('{a:"b"}');  // will give $arr = ['a': 'b']
$js_object = json_decode($arr); // will return '{a:"b"}'

这取决于你想要完成什么。

如果你只是想在 PHP 中存储 JavaScript 中的东西,那么在 PHP 中将数组的 JSON 表示形式分配给字符串文字。

你想实际操作数组数据,然后你需要编写代码来解析 JavaScript 中的数组,将其保存在内存中,然后写出一些包含数组的 JavaScript 代码。 此过程称为序列化/反序列化。我在 .net 中工作,.net 框架包含内置类来执行这些任务;我认为你的框架也可能如此。

你应该将JSON编码的JS数组传递给php文件(通过ajax或简单形式),然后用json_decode()解码它;最后把它保存在session中。所以,首先,在你的JS代码上像这样的东西:

var json_text = JSON.stringify(your_array, null);

然后,json_text传递给您的 PHP 文件,以便您可以像这样保存它:

$_SESSION['myArray'] = json_decode($_POST['json_string']);

当然$_POST['json_string']这取决于您为参数指定的名称。

看看json_encode和json_decode。基本上使用 json_decode 将 javascript 数组转换为 php 数组,json_encode做相反的事情。

将 myArray 转换为 json:

var s = "[" = myArray.join + "]"

只有当myArray包含不需要引号的东西(如整数或浮点数)时,这才会起作用。

您可以使用一些JavaScript框架来抽象化脚本中将值转换为json的问题,不记得名称,但我听说它们是值得的。 另一方面,它并不比你上面看到的要难得多,这取决于你正在处理什么样的价值观。

要将 JSON 发送到服务器,请执行以下操作:

document.getElementById("someHiddenElement").value = s;

然后你的服务器端 php 可以将值保存在会话中。