6

我正在尝试从 php DB 查询的结果构建一个 javascript 数据数组以供在flot中使用。

当我输出数字时($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
];

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

4

3 回答 3

8

后端更好的解决方案是将数据结构化为数组,关联或其他方式。

然后返回它:

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

在前面:

<script>
    var my_var = {!! $my_var !!};
</script>
于 2017-02-08T19:06:15.737 回答
0

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

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

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

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

这是因为我的 SQL 中的字段名称(公司名称)的大小写略有不同。
MS SQL Server 不关心这种情况,PHP 关心(Companyname vs CompanyName)!

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

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

于 2013-08-27T07:04:03.530 回答
0

Easyway https://laravel.com/docs/8.x/blade#rendering-json

<script>
     var app = {{ Js::from($array) }};
</script>
于 2022-02-09T12:43:06.827 回答