从localStorage检索,然后在php中使用


retrieving from localStorage then using in php

我有一个多维数组($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}] 

我将它存储在本地存储中,我认为这是正确的吗?

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

a) 如何从localStorage检索它?

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

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

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

此行:

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

正在生成字符串:

var array="[{"秩":5,"天":1},{"阶":4,"日":1},{;

但是字符串会因为嵌套的引号而中断。

这行应该用单引号写:

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

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

localStorage.setItem('myArray',myArray);

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

myArray=localStorage["myArray"];

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

-C