繁体   English   中英

将数据从Controller传递给JavaScript

[英]Pass Data from Controller to JavaScript

我想将数据从我的Controller传递到处理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的第二个栏是空白的.... 在此输入图像描述

但是应该显示我的变量。

我该如何解决这个问题?

只需更换:

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

通过:

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

它应该工作。

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

你需要做的是:

  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> 

这对我有用

<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'));

}

似乎无法在.js文件中成功解析变量$tmp 为什么不把.js文件中的代码放入template.blade.php

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM