laravel 获取要传递给 laravel blade 但采用 json 格式的数据
laravel get data to pass to laravel blade but in json format
我有数据表明我正在使用 d3.js 创建图表。我让那部分工作对数据进行硬编码
var data = {
"name": ["A", "B", "C", "D", "E"],
"vals": [48, 35, 34, 21, 11]
}
我苦苦挣扎的地方是将数据输入我的 blade 模板的 javascript 部分。我试图对以下内容进行硬编码,我得到一个 htmlspecialchars() 期望参数 1 为字符串,object 给定。
$test = json_encode([
"name" => ["A", "B", "C", "D", "E"],
"vals"=> [48, 35, 34, 21, 11]
]);
在脚本区用这个blade
var test = {{json_decode($test)}};
如果我不这样做 json_decode 我不会收到错误,但它会将我的 " 转换为 ",这显然是行不通的。
我知道我只是遗漏了一些东西来让它工作,但也许我会做一个新方法并做一个 ajax 调用来获得它。
任何想法或提示都会有所帮助
您需要输出未转义的值 - var test = {!! $test !!}
.
如果您从数据库或模型中获取值,您可以考虑使用 toJson()
帮助器。
简单地使用未转义的输出:
<script>
var array = {!! json_encode($array) !!};
</script>
或者
<script>
var array = @json($array);
</script>
PHPStorm 中的两种变体都会突出显示此行并显示错误 - 应为表达式
所以,我的完整答案是:
<script>
var array = [].concat(@json($array));
</script>
@fubar 的解决方案对我有用。一个小小的改变。解决方案 @json($geoJson)
没有。但那是因为我没有将数组放入函数中,而是已经是一个字符串。我不得不为我扩展@fubar 的方法:
const data = JSON.parse(' {!! $geoJson !!} ');
console.log('data', data);
单引号很重要。
我有数据表明我正在使用 d3.js 创建图表。我让那部分工作对数据进行硬编码
var data = {
"name": ["A", "B", "C", "D", "E"],
"vals": [48, 35, 34, 21, 11]
}
我苦苦挣扎的地方是将数据输入我的 blade 模板的 javascript 部分。我试图对以下内容进行硬编码,我得到一个 htmlspecialchars() 期望参数 1 为字符串,object 给定。
$test = json_encode([
"name" => ["A", "B", "C", "D", "E"],
"vals"=> [48, 35, 34, 21, 11]
]);
在脚本区用这个blade
var test = {{json_decode($test)}};
如果我不这样做 json_decode 我不会收到错误,但它会将我的 " 转换为 ",这显然是行不通的。
我知道我只是遗漏了一些东西来让它工作,但也许我会做一个新方法并做一个 ajax 调用来获得它。
任何想法或提示都会有所帮助
您需要输出未转义的值 - var test = {!! $test !!}
.
如果您从数据库或模型中获取值,您可以考虑使用 toJson()
帮助器。
简单地使用未转义的输出:
<script>
var array = {!! json_encode($array) !!};
</script>
或者
<script>
var array = @json($array);
</script>
PHPStorm 中的两种变体都会突出显示此行并显示错误 - 应为表达式
所以,我的完整答案是:
<script>
var array = [].concat(@json($array));
</script>
@fubar 的解决方案对我有用。一个小小的改变。解决方案 @json($geoJson)
没有。但那是因为我没有将数组放入函数中,而是已经是一个字符串。我不得不为我扩展@fubar 的方法:
const data = JSON.parse(' {!! $geoJson !!} ');
console.log('data', data);
单引号很重要。