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

JavaScript处理PHP AJAX返回JSON报错:jsonData[0]未定义的解决方法

解决「TypeError: jsonData[0] is undefined」的问题

咱们先搞清楚问题出在哪——你的脚本没正确识别AJAX返回的JSON结构,才会触发这个未定义错误。

先拆解返回的数据结构

你拿到的JSON是嵌套结构:真正的城市数据藏在body字段里,而且这个body本身还是一个JSON字符串(不是直接能用的对象)。核心层级是:

AJAX返回的data对象 → body(JSON字符串)→ comuni(城市对象数组)

你现在的代码直接用jsonData[0]去取数据,但解析后的整个jsonData根本没有索引0,你要找的数组其实在jsonData.body.comuni里面。

修正后的脚本

下面是调整后的success回调函数,能正确获取城市数据:

success: function(data) {
    console.log(data);
    
    // 第一步:解析body字段里的JSON字符串,拿到包含城市数组的对象
    var bodyData = JSON.parse(data.body);
    // 第二步:取出comuni数组里的第一个城市对象
    var comune = bodyData.comuni[0];

    // 加个安全判断,避免comuni数组为空时报错
    if (!comune) {
        console.log("未找到城市数据");
        return;
    }

    // 现在处理你的判断逻辑(注意:要和字符串"0"比较,不是数字0!)
    if (comune.datasub !== "0") {
        $('.nome-comune').html(comune.nomeComune);
        $('.provincia').html(comune.provincia);
        $('.data-sub').html(comune.datasub);
        resultsSub();
    } else if (comune.datapresub !== "0" && comune.datasub === "0") {
        $('.nome-comune').html(comune.nomeComune);
        $('.provincia').html(comune.provincia);
        $('.data-presub').html(comune.datapresub);
        resultsPresub();
    } else {
        $('.nome-comune').html(comune.nomeComune);
        $('.provincia').html(comune.provincia);
        noAnpr();
    }
}

避坑提示

  • 字符串vs数字对比:你的datapresub和datasub都是字符串格式(要么是日期字符串,要么是"0"),所以判断时要用=== "0",别用数字0,否则会出现判断不准的情况。
  • 数据解析注意:如果你的AJAX请求设置了dataType: 'json',那顶层的data已经是解析好的JS对象了——你只需要单独解析data.body这个字符串就行。
  • 容错处理:加个if (!comune)的判断,能避免comuni数组为空或者不存在时再次报错。

内容的提问来源于stack exchange,提问作者Enrico Nry Celone

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:07:38