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

合并Ajax请求后无法获取返回数组数据的技术求助

解决合并Ajax请求后无法提取返回数据的问题

问题核心原因

你当前的问题由三个关键错误导致:

  1. 后端输出格式错误:后端用print_r输出PHP数组,这是调试用的可读格式,并非前端能直接解析的标准JSON数据
  2. 键名大小写不匹配:前端代码里写的data['CurLim']['uemmin'],和后端返回的curLim大小写不一致,导致无法取值
  3. 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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 05:15:36