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

如何将Laravel Eloquent对象传入JavaScript函数?

解决Laravel Eloquent对象传递给JavaScript函数的问题

直接传递{{$info}}会导致JS无法识别正确的对象结构,因为Eloquent对象直接输出会变成非标准的字符串格式。以下是两种可行的解决方式:

方法一:使用Blade的@json指令(推荐)

Blade内置的@json指令会自动将Eloquent对象序列化为合法的JSON字符串,同时处理好HTML转义,避免引号冲突:

<td><i class="fa-solid fa-pen-to-square" onclick="showPopUp(@json($info))"
       style="cursor: pointer; color: blue"></i></td>

如果需要只传递指定字段(避免泄露敏感数据),可以先筛选字段再转JSON:

<td><i class="fa-solid fa-pen-to-square" onclick="showPopUp(@json($info->only(['id', 'name', 'email', 'workplace_name', 'department_name'])))"
       style="cursor: pointer; color: blue"></i></td>

方法二:手动使用json_encode

通过PHP的json_encode函数序列化对象,配合参数处理引号转义:

<td><i class="fa-solid fa-pen-to-square" onclick="showPopUp({{ json_encode($info, JSON_HEX_APOS) }})"
       style="cursor: pointer; color: blue"></i></td>

JSON_HEX_APOS会将单引号转成Unicode编码,避免和onclick属性的单引号冲突;如果onclick使用双引号包裹,则可以用JSON_HEX_QUOT参数。

对应的JavaScript函数示例

在JS中直接接收对象即可使用:

function showPopUp(userInfo) {
    // 示例:打印用户名称和邮箱
    console.log('用户名:', userInfo.name);
    console.log('邮箱:', userInfo.email);
    // 后续弹窗逻辑
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:55:21