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

Laravel前后端传值遇Uncaught SyntaxError错误求解决方案

解决Laravel后端传数据到前端出现Uncaught SyntaxError的问题

问题原因

Blade模板的{{ }}语法会自动转义HTML特殊字符(比如双引号会被转成"),你后端提前用json_encode生成的JSON字符串,经过转义后在前端变成了包含&等转义字符的内容,导致JS无法正确解析为对象,从而抛出语法错误。

解决方案

方案一:使用非转义输出语法{!! !!}

直接修改前端代码,用{!! !!}替代{{ }},避免Blade转义JSON内容:

const productionData = {!! $chartData !!};
console.log(productionData);

⚠️ 注意:仅当你能确保$chartData是完全安全的JSON(无恶意脚本内容)时使用,因为非转义输出存在XSS风险。

方案二:使用Laravel的@json指令(推荐)

这种方式更安全且简洁,不需要后端提前做json_encode:

  1. 修改后端代码,直接传递生成的数组/对象:
public function __invoke(Request $request)
{
    $productions = new \App\Services\ChartServices\ProductionChart;
    
    return view('home', [
        'title' => 'Home',
        'chartData' => $productions->generate() // 直接传原始数据,不提前json_encode
    ]);
}
  1. 前端用@json指令输出:
const productionData = @json($chartData);
console.log(productionData);

@json会自动完成JSON编码和正确的字符转义,输出合法的JS对象,同时避免XSS风险。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 22:56:29