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

如何通过AJAX一次性将多个选中的Checkbox数据发送到PHP

解决方案

你原来的代码是把AJAX请求写在了each遍历的循环体内,所以每处理一行选中数据就会发起一次请求,要批量发送只要把请求移到循环外,先收集所有数据再统一发送即可。

具体修改步骤

  • 先在遍历开始前定义一个空数组,用来存储所有选中行的数据集
  • 公共参数tgl不用在循环内重复获取,提前拿到即可减少冗余操作
  • 遍历每一行选中项的时候,把单条数据组装成对象push到数组里
  • 遍历完成后只发起一次AJAX请求,把整个数组和公共参数一起传给后端

修改后的代码

$('#lunas').click(function(){
    // 提前获取公共参数 不用在循环内重复读取
    const tgl = document.getElementById('tgl').value;
    // 定义空数组存储所有选中数据
    const dataList = [];

    $('#tampilkan tbody input:checked').each(function(){
        const tr = $(this).closest('tr')[0];
        // 组装单条行数据
        const rowData = {
            nosam: tr.cells[1].innerHTML,
            unit: tr.cells[2].innerHTML,
            blthn: tr.cells[8].innerHTML,
            dd: Number(hapusTitik(tr.cells[9].innerHTML)),
            rp: Number(hapusTitik(tr.cells[10].innerHTML))
        };
        // 将单条数据推入数组
        dataList.push(rowData);
    });

    // 所有数据收集完成后 只发起一次AJAX请求
    $.ajax({
        url: 'get/penjualan_simpan.php',
        method: 'POST', // 建议指定POST方式 避免GET传参长度限制
        data: {
            data_list: dataList,
            tgl: tgl
        },
        cache: false,
        success: function(data){
            $('#modalByar').modal('hide');
        }
    });
});

PHP端接收处理示例

后端的penjualan_simpan.php可以直接遍历接收的数组批量处理即可:

<?php
// 接收前端传参
$tgl = $_POST['tgl'];
$dataList = $_POST['data_list'];

// 遍历所有数据执行业务逻辑 比如批量写入数据库
foreach ($dataList as $item) {
    $nosam = $item['nosam'];
    $unit = $item['unit'];
    $blthn = $item['blthn'];
    $dd = $item['dd'];
    $rp = $item['rp'];
    
    // 此处写你的业务逻辑 比如SQL插入/更新操作
    // 推荐使用预处理语句 避免SQL注入风险
}

// 返回处理响应
echo json_encode(['code' => 200, 'msg' => '批量处理完成']);
?>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 11:24:02