You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel控制器返回数组变量到视图时出现htmlspecialchars报错求助

解决Laravel视图中数组传递到JavaScript的报错问题

嘿,我来帮你搞定这个报错!你遇到的htmlspecialchars() expects parameter 1 to be string, array given问题,根源是Blade的{{ }}语法不能直接输出数组到JavaScript里。

为什么会报错?

你在控制器里传递的$colors是一个数组,但在Blade中用"{{$colors}}"时,{{ }}会自动调用htmlspecialchars()函数来转义内容,而这个函数只接受字符串类型的参数,直接传数组自然就报错了。而且就算不报错,PHP把数组转成字符串只会输出Array,这也不是你想要的JS数组。

正确的解决方法

这里有两个简单好用的方案:

方案1:使用Laravel内置的@json指令(推荐)

Laravel专门提供了@json指令来处理这种把后端变量转成合法JS数据的场景,它会自动帮你完成JSON编码和正确的转义:

<script>
    var colors = @json($colors);
</script>

方案2:手动用json_encode配合无转义输出{!! !!}

如果你的Laravel版本偏旧,也可以用json_encode把数组转成JSON字符串,再用{!! !!}来输出({!! !!}不会对内容进行HTML转义,而JSON格式的字符串在JS里是合法的):

<script>
    var colors = {!! json_encode($colors) !!};
</script>

效果验证

这两种方法都会把你的['dummy1','dummy2','dummy3']数组转成JS里的["dummy1","dummy2","dummy3"],完全符合你的需求,而且不会触发报错。

内容的提问来源于stack exchange,提问作者27mdmo7sn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:53:41