0

我有一个多维数组($order)。

回声 json_encode($order); 产生下面的输出,以便您可以看到结构:

[{"rank":5,"day":1},{"rank":4,"day":1},{"rank":1,"day":2},{"rank":3,"day":2},{"rank":2,"day":2}] 

我将它存储在我认为正确的 localStorage 中?

var array = "<?php echo(json_encode($order)); ?>";
localStorage.setItem('array', array);

a) 我如何从 localStorage 中检索它?

b) 然后我如何在 php 中使用它?

4

2 回答 2

1

localStorage 存储字符串,而不是结构化对象。如果要存储 JSON 对象,请使用localStorage["mything"] = JSON.stringify(myvar),然后从 localStorage(绑定到各个页面)中检索它,JSON.parse(localStorage["mything"])请在同一页面上使用。

不使用 JSON.stringify 意味着您将存储字符串 "[Object object]" 或类似的东西,因为 JavaScript 会将您的对象强制转换为字符串并完全错误地用于您的目的。

于 2013-09-03T01:15:07.440 回答
0

这一行:

var array = "<?php echo(json_encode($order)); ?>";

正在产生一个字符串:

var array = "[{"rank":5,"day":1},{"rank":4,"day":1},{"rank":1,"day":2},{"rank ":3,"day":2},{"rank":2,"day":2}]";

但由于嵌套引号,字符串会中断。

该行应该用单引号写成:

var myArray = '<?php echo(json_encode($order)); ?>';

现在您将有一个适当的字符串存储到本地存储中:

localStorage.setItem('myArray', myArray);

然后,您可以使用以下命令从本地存储中检索它:

myArray = localStorage["myArray"];

但是,正如 totymedii 建议的那样,在 php 中使用数组的最佳选择是在 ajax 调用中将其发送到您的服务器。

-C

于 2013-09-03T02:17:05.270 回答