如何在jQuery中检查JSON响应中的空数据表?
解决方案
首先修正原代码中的两处关键问题:
- 根对象判断逻辑错误:原
dataResponse != null || dataResponse != undefined会导致dataResponse为null或undefined时仍进入代码块,应改为逻辑与判断 - 空数组访问保护:对
Table和Table2数组做长度检查,避免直接访问[0]导致的Cannot read properties of undefined错误 - 额外保护
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
相关产品推荐
相关产品推荐

