【问题标题】:How to convert PHP Nested Array into JQuery Array如何将 PHP 嵌套数组转换为 JQuery 数组
【发布时间】:2019-03-09 08:40:40
【问题描述】:

我正在尝试将嵌套的 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 数组一样使用它

【问题讨论】:

  • var child_cat_id = &lt;?php echo json_encode($child_cat_id);?&gt;;
  • 不需要解析,直接赋值给变量即可。
  • @u_mulder 我做了并且它可以工作,但是在这个变量中的某个地方'即(撇号)存在,所以其余数据抛出错误“Uncaught SyntaxError:Unexpected identifier”for'和其余数据被截断,怎么能我将其作为数组进行消毒
  • json_encode 转义所有符号。所以,你的问题出在其他地方。打开生成的 html/js 看看你有什么。
  • 将实际的 JSON(如屏幕截图和页面的“查看源代码”所示)粘贴到在线 JSON 验证器中以查看问题所在。

标签: javascript php jquery arrays


【解决方案1】:

您的 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 就会出现“错误”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 2017-10-11
    • 1970-01-01
    • 2021-03-21
    • 1970-01-01
    • 2017-11-15
    • 2021-08-11
    相关资源
    最近更新 更多