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

PHP如何接收AJAX发送的JSON数据并循环解析dataList数组

解决方案

方法1:前端转JSON传输(推荐,兼容性更强)

第一步:修改前端AJAX代码

修复原有代码两处问题:1. url配置行末尾缺失逗号 2. 把数组转成JSON字符串再传输,避免格式解析异常

function lihat(){
    let id = "12345678";
    let profile = [{name:"dave", department : "Engginering"},
                   {name:"Tedd", department : "Engginering"}]
    $.ajax({
        type:'POST',
        url:'pages/dashboard/dashboard_be.php', // 修复缺失的逗号
        data:{
            cekload  : true,
            keys     : id,
            dataList : JSON.stringify(profile) // 数组转JSON字符串传输
        },
        success:function(data){
            console.log(data);
        }
   })
}

第二步:修改后端PHP接收代码

修复原有代码语法错误,完成解析和遍历:

// 接收基础参数,建议自行补充isset判断避免未传参时报错
$id      = $_POST['keys'];
$cekload = $_POST['cekload'];
// 第二个参数传true表示把JSON转成关联数组,否则返回stdClass对象
// 修复原有代码括号内多写分号的语法错误
$dataList = json_decode($_POST['dataList'], true);

// 循环遍历示例
foreach ($dataList as $item) {
    $name = $item['name'];
    $department = $item['department'];
    // 这里写你自己的业务逻辑即可,比如入库、打印输出等
    echo "姓名:{$name},部门:{$department}<br>";
}

方法2:不修改前端代码,直接接收自动解析的数组

jQuery发送数组时会自动按表单多维参数格式编码,PHP可以直接识别为数组,不需要做JSON解析:

// 直接接收即可,不需要json_decode
$id      = $_POST['keys'];
$cekload = $_POST['cekload'];
$dataList = $_POST['dataList'];

// 遍历方式和方法1完全一致
foreach ($dataList as $item) {
    $name = $item['name'];
    $department = $item['department'];
    // 业务逻辑
}

小提示:方法2如果遇到数组长度过长的情况,可能会因为PHP的max_input_vars配置限制导致参数被截断,优先推荐使用方法1,数据格式更可控。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 07:06:03