【问题标题】:Pass Data from Controller to JavaScript将数据从控制器传递到 JavaScript
【发布时间】:2015-11-06 06:54:51
【问题描述】:

我想将数据从我的控制器传递到处理 Google 条形图的 JavaScript。

作曲家

$tmp = 6;
return view('pages.template', ['tmp' => $tmp]);

来自我的template.blade.php 我调用了谷歌图表

<div id="chart_div"></div>

.js 文件:

var tmp = 6;
var tmp2 = parseInt('{!! $tmp !!}');

var data = google.visualization.arrayToDataTable([
    ['comment1', 'comment2'],
    ["- 6 days", tmp],
    ["- 5 days", tmp2],
    ["- 4 days", 31],
    ["- 3 days", 12],
    ["- 2 days", 10],
    ["- 1 day", 3],
    ["today", 4]

Google-Bar-Chart 中的第二个栏为空白 ....

但是应该显示我的变量。

我该如何解决这个问题?

【问题讨论】:

  • 也许尝试一下 Brandon "here" 的回复,只是因为我认为您正在尝试在链接的 .js 文件上使用 php 变量,但这是行不通的。

标签: javascript php html laravel


【解决方案1】:

只需替换:

var tmp2 = parseInt('{!! $tmp !!}');

作者:

var tmp2 = parseInt(<?php echo $tmp; ?>);

它应该可以工作。

【讨论】:

    【解决方案2】:

    您正在尝试在 JS 文件中使用 Blade 语法。为了让它工作,这个文件需要被 Blade 编译器处理。这意味着您不需要在您的网站中直接包含 JS 文件,而是需要包含一个将由 Laravel 处理并输出 Javascript 代码的 URL。这是可能的,但这通常是一个糟糕的选择。 其他请求需要由 Laravel 处理,而不是直接从服务器获取轻量级 JS 文件。

    你需要做的是:

    1. 将 Javascript 放入 Blade 模板中
    2. 创建一个控制器动作

      class JavascriptController extends Controller {
        public function javascript() {
          $tmp = 6;
          return view('javascript', ['tmp' => $tmp]);
        }
      }
      
    3. 在您的 routes.php

      中为该操作添加路由
      Route::get('/javascript', 'JavascriptController@javascript');
      
    4. 不包含原始的 Javascript 文件,而是包含一个将执行此控制器操作的 URL

      <script src="{{route(javascript)}}"></script>
      

    【讨论】:

      【解决方案3】:

      这对我有用

      <script type="text/javascript">
      
      var tmp = {!! json_encode($tmp->toArray()) !!};
      console.log(tmp);
      
      </script>
      

      在您的控制器中,您可以执行以下操作

      public function index()
      
      {
      
      $tmp = Tmp::get();
      
      return view('tmp.index', compact('tmp'));
      
      }
      

      【讨论】:

        【解决方案4】:

        $tmp 文件中的变量 $tmp 似乎没有成功解析。为什么不将.js文件中的代码放入template.blade.php

        【讨论】:

        • 我不认为将 javascript 放入视图文件以强制其工作是最好的方法。
        猜你喜欢
        • 2012-08-13
        • 1970-01-01
        • 2014-02-22
        • 1970-01-01
        • 1970-01-01
        • 2015-12-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多