我有一些数据,我正在使用d3.js创建一个图表。我有一部分工作与硬编码的数据一样
var data = {
"name": ["A", "B", "C", "D", "E"],
"vals": [48, 35, 34, 21, 11]
}
我正在努力的地方是把数据放到我的blade模板的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,我不会得到错误,但它会将我的“to”转换为“,这显然是行不通的。
我知道我只是在这里错过了一些东西,使它工作,但也许我会做一个新的方法,并做一个 AJAX 调用得到它。
任何想法或提示都会很有帮助
4条答案
按热度按时间b5buobof1#
只需使用未转义的输出:
或者
PHPSorm中的两个变体都将突出显示此行并显示错误-需要表达式
所以,我的完整答案是:
yftpprvb2#
您需要输出未转义的值-
var test = {!! $test !!}
。如果从数据库或模型中获取值,可以考虑使用
toJson()
帮助器。ovfsdjhp3#
@fubar的解决方案对我很有效,只是做了一个小改动。
@json($geoJson)
的解决方案不行。但那是因为我没有把数组而是一个字符串放进函数中。我不得不为我扩展@fubar的方法:单引号很重要。
pjngdqdw4#
最新Laravel 9中推荐的方法是:
它使用了
JSON.parse(...)
方法,与@ MaikLowrey的答案相同https://laravel.com/docs/9.x/blade#rendering-json