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

如何在jQuery中检查JSON响应中的空数据表?

解决方案

首先修正原代码中的两处关键问题:

  1. 根对象判断逻辑错误:原dataResponse != null || dataResponse != undefined会导致dataResponse为null或undefined时仍进入代码块,应改为逻辑与判断
  2. 空数组访问保护:对Table和Table2数组做长度检查,避免直接访问[0]导致的Cannot read properties of undefined错误
  3. 额外保护Table5的数组访问,避免潜在报错

修改后的完整代码:

var dataResponse = JSON.parse(response);
var NE_length_Data = "";
// 修正根对象判断,确保dataResponse有效
if (dataResponse) {

  var FSAInfoData = dataResponse.Table; // UG
  var FSAInfoData1 = dataResponse.Table1; // MDU
  var FSAInfoData2 = dataResponse.Table2; // AR
  var FSAInfoData3 = dataResponse.Table3; // vendor
  var FSAInfoData4 = dataResponse.Table4; // history
  var FSAInfoData5 = dataResponse.Table5; // progress data

  $("#spnFiberEngFsaId").text(FSA_IDNew);
  
  // 对Table5做空数组检查,避免访问[0]报错
  if (FSAInfoData5 && FSAInfoData5.length > 0) {
    $("#spnProgressID").text(FSAInfoData5[0].JOB_PROGRESS_ID);
  } else {
    // 可选:空值时显示默认文本
    $("#spnProgressID").text("无进度数据");
  }

  // 分别处理两个数组的空值情况,为空时取0参与计算
  var ugLength = (FSAInfoData && FSAInfoData.length > 0) ? FSAInfoData[0].UG_LENGTH : 0;
  var arLength = (FSAInfoData2 && FSAInfoData2.length > 0) ? FSAInfoData2[0].AR_LENGTH : 0;
  var NE_LENGTH = ugLength + arLength;
  
  $("#spnFiberEngFsaLength").text(NE_LENGTH.toFixed(4));

}

关键逻辑说明

  • 数组空值检查:使用(数组变量 && 数组变量.length > 0)判断数组是否存在且有元素,确保后续访问[0]不会报错
  • 默认值处理:当数组为空时,对应长度取0,保证计算不会出现NaN
  • 根对象判断:简化为if (dataResponse),等价于判断dataResponse不是null、undefined、""、0等假值,更简洁安全

内容的提问来源于stack exchange,提问作者Nadeem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 08:17:24