合并Ajax请求后无法获取返回数组数据的技术求助
解决合并Ajax请求后无法提取返回数据的问题
问题核心原因
你当前的问题由三个关键错误导致:
- 后端输出格式错误:后端用
print_r输出PHP数组,这是调试用的可读格式,并非前端能直接解析的标准JSON数据 - 键名大小写不匹配:前端代码里写的
data['CurLim']['uemmin'],和后端返回的curLim大小写不一致,导致无法取值 - Ajax未指定数据类型:jQuery默认会根据响应头推断数据类型,但如果后端没正确设置响应头,返回内容会被当成普通字符串,而非JSON对象
分步解决方法
1. 修正后端输出(最关键)
修改你的ajax.php,将PHP数组转换为标准JSON格式输出,并设置正确的响应头:
// 假设你已经组装好要返回的数组$response header('Content-Type: application/json'); // 告诉前端这是JSON类型数据 echo json_encode($response); // 把PHP数组转为JSON字符串 exit; // 确保后续没有多余输出干扰
2. 修正前端Ajax代码
更新updateAll函数中的Ajax请求,指定数据类型并修正键名错误:
function updateAll(article){ document.getElementById("artnr").value = article.options[article.selectedIndex].text; document.getElementById("SaveMessage").innerHTML = ""; $.ajax({ type: 'GET', url: 'ajax.php', data: $(article), dataType: 'json', // 明确告诉jQuery要把响应解析成JSON对象 success: function(data){ // 修正键名大小写:CurLim -> curLim document.getElementById("cntOrder").value = data['cntOrder']['cnt']; document.getElementById("setPoint").value = data['setPoint']; document.getElementById("curLim").value = data['curLim']['uemmin']; calcTarLim(data['setPoint']); }, error: function(xhr, status, error){ // 新增错误处理,方便调试排查 console.log('Ajax请求出错:', error); } }); }
3. 调试验证
打开浏览器开发者工具(F12),切换到网络标签,查看ajax.php的响应内容,确认是标准JSON格式,示例如下:
{"cntOrder":{"cnt":6},"curLim":{"uemmin":16.00},"setPoint":26.28}
如果仍有问题,可在success函数中添加console.log(data),查看实际获取到的对象结构。
内容的提问来源于stack exchange,提问作者Microscoop
相关产品推荐
相关产品推荐

