【问题标题】:laravel get data to pass to laravel blade but in json formatlaravel 获取要传递给 laravel Blade 的数据,但是是 json 格式
【发布时间】:2018-01-11 18:00:41
【问题描述】:

我有使用 d3.js 创建图表的数据。我让那部分工作对数据进行硬编码

var data = {
            "name": ["A", "B", "C", "D", "E"],
            "vals": [48, 35, 34, 21, 11]
        }

我苦苦挣扎的地方是将数据放入刀片模板的 javascript 部分。我试图硬编码以下内容,我得到一个 htmlspecialchars() 期望参数 1 是字符串,给定对象。

$test = json_encode([
            "name" => ["A", "B", "C", "D", "E"],
            "vals"=> [48, 35, 34, 21, 11]
        ]);

在刀片的脚本区域中使用这个

var test = {{json_decode($test)}};

如果我不执行 json_decode,我不会收到错误,但它会将我的 " 转换为 &quot,这显然是行不通的。

我知道我只是在这里遗漏了一些东西来使它工作,但也许我会做一个新方法并做一个 ajax 调用来获取它。

任何想法或提示都会有所帮助

【问题讨论】:

    标签: javascript php json laravel laravel-blade


    【解决方案1】:

    您需要输出未转义的值 - var test = {!! $test !!}。

    如果您从数据库或模型中获取值,您可以考虑使用 toJson() 帮助器。

    【讨论】:

    • 知道这很简单。谢谢。
    【解决方案2】:

    只需使用未转义的输出:

    <script>
        var array = {!! json_encode($array) !!};
    </script>
    

    或者

    <script>
        var array = @json($array);
    </script>
    

    PHPStorm 中的两个变体都会以错误突出显示这一行 - 预期表达式

    所以,我的完整答案是:

    <script>
        var array = [].concat(@json($array));
    </script>
    

    【讨论】:

      【解决方案3】:

      @fubar 的解决方案对我有用。有一点小小的改变。解决方案@json($geoJson) 没有。但那是因为我没有将数组放入函数中,而是已经是字符串。我不得不为我扩展@fubar 的方法:

      const data = JSON.parse(' {!! $geoJson !!} ');
      console.log('data', data);
      

      单引号很重要。

      【讨论】:

        猜你喜欢
        • 2021-01-07
        • 2020-10-16
        • 2019-04-19
        • 2016-05-05
        • 2016-02-05
        • 2021-06-29
        • 2016-04-12
        • 2022-06-30
        • 2023-03-14
        相关资源
        最近更新 更多