我有一个多维数组($ 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中使用它?
答案 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