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

Laravel 5.6模态表单点击编辑时name字段无法加载数据库数据

解决模态框编辑时name输入框无法填充的问题

我帮你排查了代码里的问题,核心原因大概率是编辑按钮的data-name属性没正确包裹引号,导致HTML解析出错,jQuery拿不到完整的name值。下面给你一步步的解决思路和修复方案:

1. 修复表格行中编辑按钮的data属性引号问题

看你AJAX成功后替换表格行的这段代码:

$('#brc' + id).replaceWith("<tr id='brc" + data.id + "'><td>" + data.id + "</td><td>" + data.name + "</td><td><button type='button' class='btn btn-info btn-xs editpolicy' data-descr=" + data.description + " data-name=" + data.name + " data-id=" + id + "><i class='fa fa-edit'></i>Edit</button>...</td></tr>");

这里的data-name=" + data.name + "没有给属性值加引号,如果你的policy名称里有空格或者特殊字符(比如&、括号之类的),HTML会把第一个空格后的内容当成新属性,导致$(this).data('name')只能拿到半截内容,甚至完全取不到值。

修复方式:给所有data属性的值加上转义的双引号:

$('#brc' + id).replaceWith("<tr id='brc" + data.id + "'><td>" + data.id + "</td><td>" + data.name + "</td><td><button type='button' class='btn btn-info btn-xs editpolicy' data-descr=\"" + data.description + "\" data-name=\"" + data.name + "\" data-id=\"" + id + "\"><i class='fa fa-edit'></i>Edit</button><button type='button' class='btn btn-info btn-xs viewpolicy' data-descr=\"" + data.description + "\" data-name=\"" + data.name + "\" data-id=\"" + id + "\"><i class='fa fa-eye'></i>View</button><button type='button' class='btn btn-danger btn-xs delpolicy' data-id=\"" + id + "\"><i class='fa fa-trash'></i>Delete</button></td></tr>");

用\"来包裹属性值,避免和外层的双引号冲突,这样不管name里有什么字符,都能被正确解析。

2. 检查初始渲染的表格按钮是否也有同样问题

如果页面加载时就有的表格行,编辑按钮也要确保data属性是带引号的,比如在Blade模板里应该这么写:

<button type='button' class='btn btn-info btn-xs editpolicy' data-descr="{{ $policy->description }}" data-name="{{ $policy->name }}" data-id="{{ $policy->id }}">
    <i class='fa fa-edit'></i>Edit
</button>

Blade的{{ }}会自动转义特殊字符,同时帮你把属性值正确包裹在引号里。

3. 加日志调试确认值是否正确获取

你可以在编辑按钮的点击事件里加一行日志,看看拿到的name值是不是你预期的:

$(document).on("click", ".editpolicy", function() {
    console.log("获取到的Policy名称:", $(this).data('name')); // 新增日志
    $('#edpid').val($(this).data('id'));
    $('#editpolicyid').val($(this).data('id'));
    $('#edname').val($(this).data('name'));
    $('#eddescr').val($(this).data('descr'));
    $('#policyeditmodel').modal('show');
});

打开浏览器控制台(按F12),点击编辑按钮,看日志里的name值是否正确。如果日志里就不对,那肯定是按钮的data属性设置有问题。

4. 额外的小检查点

  • 确认你的Policy模型里的$fillable包含name和description字段,确保update时能正确赋值:
class Policy extends Model
{
    protected $fillable = ['name', 'description'];
}

不过看你的update方法是直接赋值后save,这个问题不大,但如果模型有$guarded设置,也要确保没限制这些字段。

  • 可以在AJAX的success回调里加console.log(data),看看返回的policy对象里name字段是否正确。

按照上面的步骤来,应该就能解决模态框name输入框无法填充的问题了。

内容的提问来源于stack exchange,提问作者S.Sakthybaalan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 09:08:59