【问题标题】:Display laravel variable using javascript使用 javascript 显示 laravel 变量
【发布时间】:2025-12-13 11:55:02
【问题描述】:

当我尝试 dd($conv) 时,数据就在那里,但我仍然无法在脚本中显示它们。 任何人都知道是什么问题,我尝试了很多方法,但它们似乎不起作用。

  <h4>{{$row->transcript_text}}</h4>
    <?php $conv = json_encode($row->transcript_text); ?>
    <script type="text/javascript">
        function splitArray() {
            var myStr = <?php echo $conv; ?>;
            var strArray = myStr.split(/(?= \| \d)/);

            // Display array values on page
            for (var i = 0; i < strArray.length; i++) {
                $("body").addClass('col-lg-offset-1').append("<h4>" + strArray[i] + "</h4>");
            })
        }
        splitArray();
    </script>

【问题讨论】:

  • 控制台是否有任何错误?如果不是,生成的 HTML 是什么?
  • 感谢 ValLeNain 的提问,没有错误没有数据,我刚得到空白页。如果我以另一种方式显示数据(意味着它们在那里),但我需要拆分这些数据,因此我必须这样做。
  • 没有错误,没有数据?而且您确定$history 已定义,而不是空且可迭代的?
  • 是的,因为我可以在脚本之外显示它们
  • 这段代码以多个主体结束。

标签: javascript laravel


【解决方案1】:

我不知道您使用的是哪个版本的 Laravel,但推荐在 HTML 模板中嵌入纯 PHP 的方法是使用 @php 表示法(参见 doc)。 无论如何,这是我会尽量避免的事情。相反,Laravel Blade 有本地方式来做你想做的事情。

@if(! empty($history))
    @foreach($history as $row)
    <script type="text/javascript">
        function splitArray() {
            var myStr = JSON.parse("{{json_encode($row->transcript_text) }}");
            var strArray = myStr.split(" | 0");

            // Display array values on page
            for (var i = 0; i < strArray.length; i++) {
                $("body").addClass('col-lg-offset-1').append("<h4>" + strArray[i] + "</h4>");
            }
        }
    </script>
    <body onload="splitArray()" style="color: lime">
    </body>
    @endforeach

【讨论】:

  • 我正在使用 laravel 4.2,但这个解决方案不起作用,仍然只是一个空页面