[英]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]
但是应该显示我的变量。
我该如何解决这个问题?
只需更换:
var tmp2 = parseInt('{!! $tmp !!}');
通过:
var tmp2 = parseInt(<?php echo $tmp; ?>);
它应该工作。
您正在尝试在JS文件中使用Blade语法。 为了使其工作,此文件需要由Blade编译器处理。 这意味着您不需要直接在您的网站中包含JS文件,而是需要包含一个将由Laravel处理并输出Javascript代码的URL。 这是可能的,但通常是一个糟糕的选择。 而不是直接从服务器获取轻量级JS文件,Laravel需要处理额外的请求 。
你需要做的是:
创建一个控制器动作
class JavascriptController extends Controller { public function javascript() { $tmp = 6; return view('javascript', ['tmp' => $tmp]); } }
在routes.php中添加到该操作的路由
Route::get('/javascript', 'JavascriptController@javascript');
而不是包括原始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.