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

jqGrid多选复选框选中值存数组插入MySQL数据库报错解决方案问询

问题根源

你遇到的两个报错均为用法错误导致:

  • JSON.parse(arry)报错:JSON.parse()仅支持解析合法JSON格式字符串,你传入的是原生JS数组,数组自动toString后多元素会携带逗号,不符合JSON格式规则,因此多选时报错,仅单选时纯字符串格式刚好符合要求可侥幸运行。
  • SQL语法报错:你直接将序列化后的数组整体作为单条empsl字段值塞入单条插入SQL,自然会把数组的[]、引号等符号带入SQL,触发语法错误。

前端代码修改

// 1. 勾选事件调整
objGrid.click(function(){
    // 每次勾选先清空数组,避免多次操作累加重复数据
    arry = [];
    var data = objGrid.jqGrid('getGridParam','selarrrow');
    for(var i =0; i<data.length; i++) {
        empsl = objGrid.jqGrid('getCell', data[i], 'empno');
        arry.push(empsl);
    }
    // 不需要做JSON转换,arry本身就是标准JS数组,直接用于提交即可
    console.log(arry);
});

// 2. 保存提交逻辑调整
buttons : {
    "저장":function() {        
        console.log(typeof arry);
        console.log("insert data",arry);
        
        if (isRunning) {
            alert($.message.common.notification.wait);
            return;
        }
        isRunning = true; 
        // 用ajax带traditional参数提交数组,避免jQuery自动给参数名加[]后缀
        $.ajax({
            url: "./CheckHoliday/addCheckHolidayData",
            type: "POST",
            traditional: true,
            data: {empsl: arry},
            success: function(data){
                if (data > 0) {
                    alert("has been saved.");
                    closeDialogFunc();
                    CheckHolidayListRefresh();
                }
                isRunning = false;
            },
            error: function(){
                isRunning = false;
            }
        });
    }
}

后端逻辑修改

核心是不要直接把接收的数组当成单个字段值插入,要适配批量插入逻辑:

  1. 后端接收前端传来的empsl数组(如果前端传的是JSON字符串,先解析为集合/数组类型)
  2. 调整SQL为批量插入模式,示例(MyBatis语法):
INSERT INTO HRS_CHECKHOLIDAY (EMPNO, EMPSL, USEYN) 
VALUES 
<foreach collection="empslList" item="item" separator=",">
    (#{empno}, #{item}, 'Y')
</foreach>

如果用其他后端语言,逻辑一致:遍历接收到的empsl集合,为每个元素生成一组插入值,用参数绑定的方式拼接SQL,避免直接字符串拼接带来的SQL注入风险和语法问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:54:02