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

时间:2012-05-29 16:03:46

标签: php javascript json session client-server

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

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

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

6 个答案:

答案 0 :(得分:4)

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

要将JavaScript数组中的数据传输到PHP会话,您需要:

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

答案 1 :(得分:0)

编码 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"}'

答案 2 :(得分:0)

查看json_encode和json_decode。基本上使用json_decode将javascript数组转换为php数组,json_encode执行相反的操作。

答案 3 :(得分:0)

这取决于你想要完成的任务。

如果你只是想在PHP中存储来自JavaScript的东西,那么它就会在PHP中为字符串文字分配一个数组的JSON表示。

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

答案 4 :(得分:0)

您应该将JSON编码的JS数组传递给php文件(通过ajax或简单形式),然后使用json_decode()对其进行解码;最后将其保存在会话中。 所以,首先,你的JS代码就是这样的东西:

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

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

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

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

答案 5 :(得分:-2)

将myArray转换为json:

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

如果myArray包含不需要引号的东西,比如整数或浮点数,那只会起作用。

你可以使用javascript框架来解决在你的脚本中将你的值放入json的问题,不记得名字,但我听说它们是值得的。另一方面,它并不比你上面看到的要困难得多,这取决于你正在处理的是什么样的价值。

将json送到服务器:

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

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