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

AJAX请求成功后调用函数出现Cannot read property 'length' of undefined错误求助

搞定「Cannot read property 'length' of undefined」错误

咱先把问题拆解透:这个报错本质是你在尝试读取一个未定义(undefined)值的length属性,结合你贴的代码来看,大概率是$.each(model.NcdexClass, function() {...})这行出的问题——因为jQuery的$.each内部会自动去遍历目标的length属性,如果model.NcdexClass是undefined,直接就会触发这个错误。

下面一步步排查解决:

1. 先确认AJAX返回的数据结构是否符合预期

你把接口返回的response赋值给了model,第一步先搞清楚这个model里到底有没有NcdexClass这个字段,以及它是不是可遍历的数组/对象:

// 在var model = response;后面加两行调试代码,看控制台输出
console.log('接口返回的完整数据:', model);
console.log('NcdexClass字段的值:', model.NcdexClass);

如果控制台里model.NcdexClass显示undefined,那要么是后端接口返回的字段名写错了(比如人家返回的是小写的ncdexClass,你写成大写开头了),要么是接口返回的整体结构和你预期的不一样,比如外层多了data包裹,得写model.data.NcdexClass才对。

2. 检查AJAX的响应解析是否正确

如果后端返回的是JSON字符串,你得确保已经把它转成JS对象了:

  • 要是用jQuery的$.ajax,记得加上dataType: 'json'参数,不然response可能还是纯字符串,这时候model.NcdexClass肯定是undefined;
  • 要是没加这个参数,也可以手动转换:var model = JSON.parse(response);。

3. 给遍历加个「安全锁」

为了避免以后再踩这种坑,建议在遍历前先做非空判断,确保model.NcdexClass存在且是可遍历的数组:

// 先判断数据是否合法,再执行遍历
if (model.NcdexClass && Array.isArray(model.NcdexClass)) {
    $.each(model.NcdexClass, function() {
        var ncdex = this;
        // 注意:每次循环都要克隆新的row,不然所有行都是同一个DOM元素
        var newRow = row.clone(true);
        $("td", newRow).eq(0).html(ncdex.script);
        $("td", newRow).eq(1).html(ncdex.expiryDate);
        $("td", newRow).eq(2).html(ncdex.measure);
        $("td", newRow).eq(3).html(ncdex.ltp);
        // 把新行追加到表格里
        $("#tblGet").append(newRow);
    });
} else {
    console.warn('NcdexClass数据不存在或者格式不对哦');
}

哦对了,你原来的代码里直接用row去append的话,会导致所有循环添加的都是同一个DOM节点,最后表格里只会显示最后一行,所以每次循环都要克隆新的row才行。

4. 顺便检查表格模板行是否存在

你代码里先克隆了表格最后一行作为模板,然后删除了除第一行外的所有行——这里要确保初始状态下表格至少有两行(表头行+模板行),不然row会是空的jQuery对象,后续操作也会出问题。可以加个判断:

var row = $("#tblGet tr:last-child").clone(true);
if (row.length === 0) {
    console.error('表格里没有可克隆的模板行啊!');
    return;
}

内容的提问来源于stack exchange,提问作者Amit-Kalshetti

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:21:53