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

jQuery追加AJAX表格内联编辑行报缺失)语法错误如何修复

错误原因

报错是字符串拼接时的引号嵌套、变量插入逻辑错误导致的,问题集中在onBlur属性的updateValue参数拼接部分:
你将JS变量dt.personId直接写在双引号包裹的HTML字符串中,没有正确断开字符串做变量拼接,也没有给updateValue的第三个参数加必要的单引号包裹,最终生成的HTML代码语法错误,浏览器解析时就会报括号缺失的异常。


修复方案

方案1:修正普通字符串拼接逻辑

把dt.personId的拼接逻辑调整为和静态PHP渲染的格式完全一致即可:

success: function(data) {
    data.forEach(function(dt) {
        $("#tbody2").append(
            "<tr>"+ 
            " <td><div contenteditable=\"true\" onBlur=\"updateValue(this, 'lName', '" + dt.personId + "')\" onClick=\"activate(this)\">" + dt.lName + "</div></td>"   +
            "</tr>"); 
    });
}

方案2:用ES6模板字符串(更推荐,避免拼接坑)

用反引号包裹的模板字符串不需要处理复杂的引号转义,直接用${变量名}插入值即可,基本不会出现引号嵌套错误:

success: function(data) {
    data.forEach(function(dt) {
        $("#tbody2").append(`
            <tr>
                <td>
                    <div contenteditable="true" onBlur="updateValue(this, 'lName', '${dt.personId}')" onClick="activate(this)">${dt.lName}</div>
                </td>
            </tr>
        `);
    });
}

额外优化建议

可以改用事件委托绑定事件,不需要在动态生成元素时写内联事件,从根源上避免引号拼接问题:

// 全局只绑定一次,对所有后续新增的元素都生效
$("#tbody2").on('blur', '[contenteditable=true]', function() {
    const field = $(this).data('field');
    const personId = $(this).data('person-id');
    updateValue(this, field, personId);
}).on('click', '[contenteditable=true]', function() {
    activate(this);
});

// 动态生成元素的代码可以简化为
success: function(data) {
    data.forEach(function(dt) {
        $("#tbody2").append(`
            <tr>
                <td>
                    <div contenteditable="true" data-field="lName" data-person-id="${dt.personId}">${dt.lName}</div>
                </td>
            </tr>
        `);
    });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:15:04