【问题标题】:get php array in javascript (laravel)在javascript(laravel)中获取php数组
【发布时间】:2019-07-05 18:03:58
【问题描述】:

我想在 javascript 代码中传递 php 数组。当我这样使用时:

var resData = "{{ json_encode($data['calendarItems']) }}";

或者这个:

 var resData = "{{ $data['calendarItems'] }}";

两者的结果都是:

[{"title":"rfvd vc","expired_at":"2018-12-31 00:00:00"}] //formatting

并且 JSON.parse 返回错误。我无法获取数组

【问题讨论】:

  • var resData = <?= $data['calendarItems']?>;

标签: javascript php arrays laravel


【解决方案1】:

这里有两个问题。第一个是您引用了 json 输出,第二个是结果被转义为 html 实体。

去掉引号并以原始格式输出结果:

var resData = {!! json_encode($data['calendarItems']) !!};

省略结果周围的引号将不再需要使用 JSON.parse(),因为变量从一开始就包含正确的 json。

阅读更多关于刀片in the manual中未转义数据的信息

【讨论】:

【解决方案2】:

当您执行 {{ }} 时,它会将内部的字符串元素转换为 html 实体。所以{会被转换成"

我会建议使用this 包,它可以更简洁地实现将数据作为刀片文件中可用的 js 变量传递。

【讨论】:

    【解决方案3】:

    你可以试试这个:

    var mapData = JSON.parse('<?php echo json_encode($latLng) ?>');

    $latLng 是一个 PHP 数组。

    【讨论】:

    • 这里不需要使用JSON.parse()。只需从 PHP 输出不带引号的响应,它就已经是有效的 json。
    猜你喜欢
    • 2021-03-05
    • 2018-08-10
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    • 2020-01-08
    • 1970-01-01
    • 1970-01-01
    • 2020-12-01
    相关资源
    最近更新 更多