1

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

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

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

4

6 回答 6

4

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

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

  1. 序列化数据(可以是表单中的输入集合,也可以是字符串。只要您没有 JSON 不支持的数据类型,JSON 对象就可以帮助处理后者)。
  2. 将数据发送到 PHP(通过提交表单或使用 Ajax)
  3. 用 PHP 读回数据(可能来自$_POST
  4. 可选择将其反序列化回数据结构
  5. 将其存放在$_SESSION
于 2012-05-29T16:10:31.333 回答
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"}'
于 2012-05-29T16:09:44.630 回答
0

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

于 2012-05-29T16:09:56.013 回答
0

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

如果您只是想在 PHP 中存储 JavaScript 中的某些内容,那么它会为 PHP 中的字符串文字分配数组的 JSON 表示形式。

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

于 2012-05-29T16:10:35.873 回答
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']取决于您为参数指定的名称。

于 2012-05-29T16:13:38.820 回答
-2

将 myArray 转换为 json:

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

这只有在 myArray 包含不需要引号的东西时才有效,比如整数或浮点数。

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

获取 json 到服务器:

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

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

于 2012-05-29T16:12:43.340 回答