laravel 获取要传递给 laravel Blade 的数据,但是是 json 格式
Posted
技术标签:
【中文标题】laravel 获取要传递给 laravel Blade 的数据,但是是 json 格式【英文标题】:laravel get data to pass to laravel blade but in json format 【发布时间】:2018-01-11 18:00:41 【问题描述】:我有使用 d3.js 创建图表的数据。我让那部分工作对数据进行硬编码
var data =
"name": ["A", "B", "C", "D", "E"],
"vals": [48, 35, 34, 21, 11]
我苦苦挣扎的地方是将数据放入刀片模板的 javascript 部分。我试图硬编码以下内容,我得到一个 htmlspecialchars() 期望参数 1 是字符串,给定对象。
$test = json_encode([
"name" => ["A", "B", "C", "D", "E"],
"vals"=> [48, 35, 34, 21, 11]
]);
在刀片的脚本区域中使用这个
var test = json_decode($test);
如果我不执行 json_decode,我不会收到错误,但它会将我的 " 转换为 ",这显然是行不通的。
我知道我只是在这里遗漏了一些东西来使它工作,但也许我会做一个新方法并做一个 ajax 调用来获取它。
任何想法或提示都会有所帮助
【问题讨论】:
【参考方案1】:您需要输出未转义的值 - var test = !! $test !!
。
如果您从数据库或模型中获取值,您可以考虑使用 toJson()
帮助器。
【讨论】:
知道这很简单。谢谢。【参考方案2】:只需使用未转义的输出:
<script>
var array = !! json_encode($array) !!;
</script>
或者
<script>
var array = @json($array);
</script>
phpStorm 中的两个变体都会以错误突出显示这一行 - 预期表达式
所以,我的完整答案是:
<script>
var array = [].concat(@json($array));
</script>
【讨论】:
【参考方案3】:@fubar 的解决方案对我有用。有一点小小的改变。解决方案@json($geoJson)
没有。但那是因为我没有将数组放入函数中,而是已经是字符串。我不得不为我扩展@fubar 的方法:
const data = JSON.parse(' !! $geoJson !! ');
console.log('data', data);
单引号很重要。
【讨论】:
以上是关于laravel 获取要传递给 laravel Blade 的数据,但是是 json 格式的主要内容,如果未能解决你的问题,请参考以下文章
Laravel - 如何获取选择值并将其传递给 RegisterController create()
Laravel 5:在路由中获取 ajax 数据并传递给控制器