[英]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
因為數組索引是從0
到length-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.