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

PHP返回JSON数组后,前端如何正确获取属性值?

问题解决:无法正确访问AJAX返回的JSON数组属性

问题根源

你遇到的问题核心有两点:

  • PHP返回的是JSON数组(外层带[]),而非单个JSON对象,直接用response.itemValue访问相当于在数组上查找对象属性,自然返回undefined。
  • 若jQuery未自动解析JSON响应,response可能是字符串类型,同样无法直接访问对象属性。

修复方案

1. 让jQuery自动解析JSON(推荐)

在AJAX配置中添加dataType: 'json',确保success回调里的response是已解析的JavaScript数组:

if(itemID){
    $.ajax({
        type:'POST',
        url:'?syspath=ajax&controller=ajax&action=getActItemDose',
        data: { 'itemId': itemID, 'itemType': itemType },
        dataType: 'json', // 指定响应类型为JSON,自动解析为JS对象/数组
        success:function(response){
            console.log(response);
            // 从数组中取出第一个对象
            var object = response[0];
            var value = object.itemValue;
            var unit = object.itemUnit;
            console.log(object);
            console.log(value);
        }
    }); 
}

2. 规范PHP响应头

在PHP代码中添加Content-Type头,明确告知浏览器返回的是JSON数据,避免解析异常:

header('Content-Type: application/json'); // 新增响应头
$row = $getProcess->fetch();
$object[] = array(
    'itemValue' => $row['each_dose'],
    'itemUnit' => $row['unit_dose']
);
echo json_encode($object);

3. 手动解析JSON(备用)

如果无法添加dataType,可以手动用JSON.parse()解析响应字符串:

success:function(response){
    // 手动将字符串解析为数组
    var responseArray = JSON.parse(response);
    var object = responseArray[0];
    var value = object.itemValue;
    var unit = object.itemUnit;
    console.log(value);
}

额外说明

你的PHP代码用$object[] = ...创建了数组结构,所以返回的JSON外层带[],必须通过索引(如[0])访问数组内的对象。如果只需要返回单个对象,也可以调整PHP代码直接返回json_encode($row),但保持数组结构更兼容多条数据的场景。

内容的提问来源于stack exchange,提问作者Muhammad Faiz Abdullah

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 13:20:42