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

Laravel控制器传对象到Blade模板时触发JavaScript语法错误

错误原因

一共两处问题共同导致报错:

  • 控制器PHP代码存在语法错误:定义$data对象的关联数组时,'modal' => $modal行末尾缺失逗号分隔符,PHP无法正常解析数组结构,会直接抛出语法异常,导致数据无法正常传递到视图。
  • Blade模板JS块变量使用方式错误:JavaScript代码块中直接书写PHP语法$data->modal时,Blade模板引擎不会自动解析该PHP变量并输出为JavaScript可识别的字面量,JavaScript运行时会将$data识别为未定义的JS对象,直接抛出引用错误;即便手动加了{{ }}输出,如果不对字符串做转义处理,变量值包含引号、换行等特殊字符时也会触发JS语法错误。
修复方案
  1. 先修复控制器的数组语法错误,补全缺失的逗号分隔符:
public function buku_all($page, $modal)
{
    $data = (object) [
        'sidebar' => "pelayanan",
        'breadcrumbsub' => 'Data Buku',
        'modal' => $modal,
        'page' => $page
    ];
    return view('admin.buku')->with('data', $data);
}
  1. 修改Blade模板中JavaScript块的变量输出逻辑,使用Blade官方提供的@json指令输出变量,自动处理转义、类型适配问题,避免JS语法错误:
// 将PHP变量值输出为标准JS字面量,自动处理特殊字符转义
const currentModal = @json($data->modal);
if (currentModal === 'book') {
    $(window).on('load', function() {
        $('#modal_edit_1').modal('show');
    });
}

注意:不要直接写const currentModal = "{{ $data->modal }}"这类写法,当变量值包含双引号、换行、斜杠等特殊字符时,依然会破坏JS语法结构,@json是Laravel官方推荐的向JS传递变量的安全写法。

内容的提问来源于stack exchange,提问作者noob all the time

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:15:35