如何在客户端存储php数组?

the*_*ect 1 javascript php jquery json dom

我从mysql数据库中提取数组.一个非常简单的select语句,然后放入您的普通多维数组(行和列)以生成一些HTML.到现在为止还挺好.

我希望能够在客户端的某个地方(DOM?)存储该数组,以便客户端可以重复使用和操作该数据(通过jQuery),而无需每次都重新查询数据库中的相同数据.

所以......让我说我的php数组是:

$fruits = array ( "fruits"  => array ( "a" => "orange",
                                       "b" => "banana",
                                       "c" => "apple"
                                     ),
                  "numbers" => array ( 1,
                                       2,
                                       3,
                                       4,
                                       5,
                                       6
                                     ),
                  "holes"   => array (      "first",
                                       5 => "second",
                                            "third"
                                     )
                );
Run Code Online (Sandbox Code Playgroud)

如何$fruits在客户端存储,以便通过javascript重新使用命令数据?

JAA*_*lde 5

使用json_encode将 $ fruits序列化为JSON ,然后将其写入类似隐藏输入的内容.使用jQuery,您可以在DOM中查询输入,在$ .parseJSON中查询其值.

服务器端:

<input type="hidden" id="FruitData" value="<?php echo htmlentities( json_encode( $fruits ) );?>" />
Run Code Online (Sandbox Code Playgroud)

客户端:

var fruits = $.parseJSON( $( '#FruitData' ).val() );
Run Code Online (Sandbox Code Playgroud)

你可以把它放在任何你喜欢的地方,真的 - 我只是喜欢输入.输入也很方便将数据传送回服务器(通过AJAX以外的方法,甚至).Cookies也会起作用.我确实避免直接输出到脚本块.我不喜欢我的语法编辑器如何在JS内部对PHP产生影响,它常常导致很多全局化的代码,并且在将脚本移动到外部文件时它会妨碍我.

此外,只要您向旧版浏览器提供JSON API,就可以替换$.parseJSONJSON.parse.