테스트 사이트 - 개발 중인 베타 버전입니다

ajax 에러 부탁드립니다 채택완료

갈팡지팡 10년 전 조회 2,595

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(
                            $('').attr('class', tr_class)
                                    .append($('').html(item.CODE))
                                    .append($('').html(item.TYPE))
                                    .append($('').html(item.LEVEL))
                                    .append($('').html(item.MESSAGE))
                                    .append($('').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개

채택된 답변
+20 포인트
10년 전

리턴된 값의 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도 출력은 됩니다. 다만 다차원이면 내부배열은 출력못해서 그부분만 다시 출력하는식으로 쓰지만 필요하다면 재귀형으로 다듬어서 보셔도 되고 뭐.. 그런식으로 리턴값도 확인해보시는게 좋겠네요.

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인