繁体   English   中英

在Ajax成功回调内的forloop中未定义response [i]

[英]response[i] is undefined in forloop inside ajax success callback

错误

TypeError: response[i] is undefined


    ...box' class='selectedSubjects' name='selectedSubjects' />
</td><td class='selected...

数组

[{"S_Code":"BCS-CER-IS","S_Name":"Information Systems.","C_Code":"BCS-CER","S_Status":"Active"},
{"S_Code":"BCS-CER-SD","S_Name":"Software Development.","C_Code":"BCS-CER","S_Status":"Active"},
{"S_Code":"BCS-CER-TEC","S_Name":"Computer & Network Technology","C_Code":"BCS-CER","S_Status":"Active"}]

AJAX成功回电

success: function (response) {
    var size = response.filter(function (value) {
        return value !== undefined
    }).length;
    for (var i = 0; i <= size; i++) {
        $("#subjectsTable tr:last").after("<tr class='success' data-index=" + (i + 1) + "><td><input type='checkbox' class='selectedSubjects' name='selectedSubjects' /></td><td class='selectedSCode'>" + response[i].S_Code + "</td><td class='selectedSName'>" + response[i].S_Name + "</td></tr>");

    }
}

为什么此响应[i]未定义?

它应该是i < size因为数组索引是从0length-1

for (var i = 0; i < size; i++) {
    $("#subjectsTable tr:last").after("<tr class='success' data-index=" + (i + 1) + "><td><input type='checkbox' class='selectedSubjects' name='selectedSubjects' /></td><td class='selectedSCode'>" + response[i].S_Code + "</td><td class='selectedSName'>" + response[i].S_Name + "</td></tr>");

}

因此,当i == size时, response[i]的值将不确定

这样的事情会起作用

for (var i = 0; i <= (size - 1); i++) {
        $("#subjectsTable tr:last").after("<tr class='success' data-index=" + (i + 1) + "><td><input type='checkbox' class='selectedSubjects' name='selectedSubjects' /></td><td class='selectedSCode'>" + response[i].S_Code + "</td><td class='selectedSName'>" + response[i].S_Name + "</td></tr>");
    }

更改为:

success: function (response) {
    var filtered = response.filter(function (value) {
        return value !== undefined
    });
    var size = filtered.length;

    for (var i = 0; i < size; i++) {
        $("#subjectsTable tr:last").after("<tr class='success' data-index=" + (i + 1) + "><td><input type='checkbox' class='selectedSubjects' name='selectedSubjects' /></td><td class='selectedSCode'>" + filtered[i].S_Code + "</td><td class='selectedSName'>" + filtered[i].S_Name + "</td></tr>");

    }
}

如果您仅采用已过滤值的大小,则可以使用已过滤数组来避免null或未定义的值。 我也<大小。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM