从localStorage检索然后在php中使用

时间:2013-09-03 00:16:19

标签: php javascript local-storage

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

echo 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中使用它?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

这一行:

var array =“&lt;?php echo(json_encode($ order));?&gt;”;

正在生成一个字符串:

var array =“[{”rank“:5,”day“:1},{”rank“:4,”day“:1},{”rank“:1,”day“:2}, { “等级”:3, “日”:2},{ “等级”:2, “日”:2}]“;

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

该行应使用单引号编写:

var myArray ='&lt;?php echo(json_encode($ order)); ?&GT;';

现在您将有一个正确的字符串存储到localstorage中:

localStorage.setItem('myArray',myArray);

然后您可以使用以下命令从localstorage中检索它:

myArray = localStorage [“myArray”];

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

-C