ajax 에러 부탁드립니다
본문
function getDataJSON(url) {
$.ajax({
type: "POST",
dataType: "json",
url: url,
data: { term: _term, from: _from, to: _to}
}).done(function(json) {
if (!json) {
alert("SYSTEM ERROR 1."); return; }
switch (json.code) {
case "200":
if(!json) { alert("SYSTEM ERROR 2."); return; }
else console.log("[developer] List loading complete.");
data = json.data;
_term = data.TERM;
_from = data.FROM;
_to = data.TO;
$("#from").val(_from);
$("#to").val(_to);
var tr_class = "tr1";
$('#list-table > tbody').empty();
$.each(data.LIST, function(i, item) {
$('#list-table > tbody:first').append(
$('<tr>').attr('class', tr_class)
.append($('<td>').html(item.CODE))
.append($('<td>').html(item.TYPE))
.append($('<td>').html(item.LEVEL))
.append($('<td>').html(item.MESSAGE))
.append($('<td>').html(item.CREATE_TM))
);
tr_class = tr_class == "tr1" ? "tr2" : "tr1";
});
break;
default : alert("SYSTEM ERROR default.");
}
});
}
여기서에서 each부분의 코드 때문에 TypeError: Cannot read property 'length' of undefined 에러가 발생합니다.. 무슨 문제 인지 조언 부탁드려요 ㅠ
답변 1
리턴된 값의 LIST가 비어있거나 했던건 아닐까 싶은데요..
$.each() 앞에 if(data.LIST.length) 를 붙여보는건 어떨까요?
근본적으로는 ajax페이지에서 문제가 있을수도 있으니 그쪽도 검증해보셔야 할듯..
인자가 data: { term: _term, from: _from, to: _to} 이렇게 넘어가는데 사전에 전역으로 선언해두신 것이려나요? 데이터를 추출하는데 이 값들이 조건으로 들어가는거라면 ajax페이지에서 인자들이 제대로 된 값들이 잘 넘어왔는지도 체크해봐야겠군요.
제경우는 js에서 배열을 출력하려고
function print_array(val) {
var str = '';
for(var i in val) {
str += i+':'+val[i]+'\n'
}
alert(str);
}
이런걸 쓰는데 json도 출력은 됩니다. 다만 다차원이면 내부배열은 출력못해서 그부분만 다시 출력하는식으로 쓰지만 필요하다면 재귀형으로 다듬어서 보셔도 되고 뭐.. 그런식으로 리턴값도 확인해보시는게 좋겠네요.
답변을 작성하시기 전에 로그인 해주세요.