在刀片模板中填充js数组

时间:2013-08-26 13:53:28

标签: javascript blade

我正在尝试根据php数据库查询的结果构建一个javascript数组,以便在flot中使用。

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

我试过了:

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

但是当我对其进行硬编码(比如说'CompanyName')时,它会构建条形图(并显示页面)。

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

我认为它必须与引用/转义js中的字符串有关,但我无法解决什么,有谁知道正确的语法是什么?

2 个答案:

答案 0 :(得分:4)

更好的解决方案

在后端

将数据结构化为数组,关联或以其他方式。

然后返回。

return view( 'view_required',[
     'my_var'=> json_encode($array_or_object, JSON_UNESCAPED_SLASHES );
]);

在前面

<script>
    var my_var = {!! $my_var !!};
</script>

快乐的编码。

答案 1 :(得分:0)

这是我的错,我最终使用了:
"<?php echo $lic->CompanyName ?>"
一旦我纠正了潜在的问题(一个区分大小写的问题),{{ $lic->CompanyName }}也会起作用。

使用Fiddler(我不能推荐得足够高)我发现空白的浏览器页面(只是一个白页)是由我的页面中返回以下内容引起的:

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

然后加载html(head标签,meta标签,css等......)。

这是我的SQL中字段名称(Companyname)的结果略有不同的结果 MS SQL Server并不关心这种情况,PHP确实如此(Companyname vs CompanyName)!

一旦php / laravel从结果集中创建了对象,字段名就会成为属性,当你访问它们时,它们必须匹配以防万一。

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