在刀片模板中填充 js 数组

Ste*_*teB 6 javascript blade

我正在尝试根据php DB 查询的结果构建一个 javascript 数据数组,用于浮点数。

当我输出数字 ($lic->Users) 时很好,但是每当我尝试输出字符串时,我都会在浏览器中得到一个完全空白的页面。

我试过了:

  • {{ $lic->CompanyName }}
  • "<?php echo $lic->CompanyName; ?>"
  • {{{ $lic->CompanyName }}}
  • '"'+ <?php echo $lic->CompanyName; ?> +'"'

但是当我对其进行硬编码(比如“公司名称”)时,它会很好地构建条形图(并显示页面)。

var data = 
[
    @foreach($licdata as $lic)
    {
    'label': "{{ $lic->CompanyName }}",
    'data': [
                ["{{ $lic->CompanyName }}", {{ $lic->Users }}], 
                ["{{ $lic->CompanyName }}", {{ $lic->Emps }}]
            ]
    },
    @endforeach
];
Run Code Online (Sandbox Code Playgroud)

我认为这一定与在 js 中引用/转义字符串有关,但我不知道是什么,有人知道正确的语法是什么吗?

A H*_*ali 7

更好的解决方案

在后端

以数组、关联或其他方式构建您的数据。

然后返回它。

return view( 'view_required',[
     'my_var'=> json_encode($array_or_object, JSON_UNESCAPED_SLASHES );
]);
Run Code Online (Sandbox Code Playgroud)

在前面

<script>
    var my_var = {!! $my_var !!};
</script>
Run Code Online (Sandbox Code Playgroud)

快乐编码。


Ste*_*teB 0

这是我的错,我最终使用了:
"<?php echo $lic->CompanyName ?>"
{{ $lic->CompanyName }}一旦我纠正了根本问题(区分大小写的问题),也有效。

使用Fiddler(我强烈推荐),我发现空白浏览器页面(只是一个白色页面)是由我的页面中返回以下内容引起的:

var data = 
[
    @foreach($licdata as $lic)
    {
    'label': "<!DOCTYPE html
<html>
  <head>
Run Code Online (Sandbox Code Playgroud)

接下来是一堆 html(head 标签、meta 标签、css 等)。

这是我的 SQL 中的字段名称(公司名称)的大小写略有不同的结果。
MS SQL Server 不关心大小写,而 PHP 则关心大小写(公司名称与公司名称)!

一旦 php/laravel 从结果集中创建对象,字段名称就会变成属性,当您访问它们时,它们必须匹配以防大小写。

始终检查 PHP 变量/对象的大小写,特别是如果框架将它们从记录自动转换为对象(或类似的东西)。