我正在尝试将嵌套的PHP数组转换为JQuery数组,但是会引发错误。
这是一个PHP数组,即输出为print_r
Array(
[867] => Array ( [id] => 867 [title] => ATM [permalinks] => atm
[parent_id] => 1 [status] => 0 [sort] => 2 [icon_class] => [image] =>
[page_strip_id] => 0 [meta_title] => [meta_keyword] => [meta_description] =>
[show_on_home] => 0 [tot_listing] => 0 )
[344] => Array ( [id] => 344 [title] => Grocery [permalinks] => grocery
[parent_id] => 10 [status] => 0 [sort] => 0 [icon_class] => icofont icofont-
gift [image] => [page_strip_id] => 0 [meta_title] => [meta_keyword] =>
[meta_description] => [show_on_home] => 0 [tot_listing] => 0 ))
jQuery代码
<script type="text/javascript">
var child_cat_id=JSON.parse('<?php echo json_encode($child_cat_id);?>');
console.log(child_cat_id);
</script>
如何将其转换并与PHP数组一样使用
答案 0 :(得分:0)
您的JSON可以有单引号,但不能转义JSON格式的单引号,但会以JavaScript结束的字符串文字结尾。另外,反斜杠不会具有JavaScript字符串文字所需的额外转义。
完全不解析JSON并假定JSON与JavaScript兼容(由PHP生成)更容易(即,没有断行字符的问题,因为PHP默认情况下会转义这些字符):
var child_cat_id=<?php echo json_encode($child_cat_id);?>;
还有另一件事要考虑:json_encode
将在编码过程中发生错误的情况下返回false
。例如,当有非UTF8数据要编码时,您将得到该结果。 echo
在这种情况下将不会输出任何内容,这将使上述解决方案无效的JavaScript(即=;
)。您可以通过多种方式用JavaScript解决此问题,例如,如下所示:
var child_cat_id=["error", <?php echo json_encode($child_cat_id);?>].pop();
因此,每当PHP无法将数据编码为JSON时,child_cat
就会是“错误”。