我的javascript函数中有一个数组,其字符串值如1,2,3,4...等。我想将此数组存储在 PHP 的会话中。我搜索了它,他们说使用 JSON,但我正在了解如何使用 JSON。
假设我的数组名称是:myArray我想做这样的事情:$_SESSION['myArray'] = myArray;
有没有办法这样做?如果可能,请提供一些工作代码示例。
你的 JavaScript 在客户端上运行,你的 PHP 在服务器上运行。您需要通过 HTTP 发送数据。
要从 JavaScript 数组获取数据到 PHP 会话,您需要:
- 将数据序列化(序列化为窗体中的输入集合或字符串)。JSON 对象可以帮助解决后者,只要您没有 JSON 不支持的数据类型)。
- 将数据发送到PHP(通过提交表单或使用Ajax)
- 在PHP中读回数据(可能来自
$_POST
) - (可选)将其反序列化回数据结构
- 将其存放在
$_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 可以将值保存在会话中。