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
相关产品推荐
相关产品推荐

