개발 Q&A

제목 ajax 질문.
글쓴이 코드이그맨 작성시각 2016/06/21 10:45:16
댓글 : 4 추천 : 0 스크랩 : 0 조회수 : 10892   RSS
<script>

    $(document).ready(function () {

        var json_obj;

        var param = {};

        //Board List Load
        $.ajax({


            url: "http://test.kr/Board/list_get",
            type: "GET",
            dataType: "json",
            success: function (data) {

                json_obj = data;


            },
            error: function (request, status, error) {

                alert("code:" + request.status + "\n" + "message:" + request.responseText + "\n" + "error:" + error);


            }


        });

        alert(json_obj[0].contents);
        alert("여기까지 옴?");


     /*   var contents = document.getElementById("table_contents").innerHTML


        var row = contents;
        row = row.split("[num]", json_obj[0].name);
        row = row.split("[title]", json_obj[1].title);
        row = row.split("[name]", json_obj[1].name);

        $("#board_table_body").append(row);*/


        // $("#table_contents")


    }); //ready()


</script>


<script id="table_contents" type="text/html">

    <tr>
        <td>[num]</td>
        <td>[title]</td>
        <td>[name]</td>
    </tr>

</script>

 

위와 같은 코드가 있습니다.

success 에서 받아서 찍어보면, 잘 넘어오는데

여기까지 잘오냐? 거기에서 찍어볼라고 하면 에러가 날까요??

ncaught TypeError: Cannot read property '0' of undefined

 

위와 같은 에러가 나옵니다 ㅠㅠㅋ

 다음글 웹 모바일 간 쿠키문제.. (6)
 이전글 view에서 객체 배열을 어떻게 사용하는지;; (4)

댓글

kaido / 2016/06/21 11:01:32 / 추천 0

리턴값의 형태를 잘못 받아오거나,  호출하는 부분에서 잘못 호출 하고 있습니다.

에러메세지 그대로 

json_obj[0].contents <-- 이런게 존재하지 않는다는 의미입니다.

 

마법의 코드를 전수해 드리지요.

success: function(data){
					var data2 = JSON.stringify(data);					
					alert(data2);
}

확인해보세요. 리턴된 형태가 생각 하신 것과 다를것입니다.

kaido / 2016/06/21 11:06:26 / 추천 0

그리고 노파심에 하나 더 넣어드리자면...

script 에서 리스트 배열 처리 방법은 

$.each(data.contents, function (key, value) {
alert(key+"__"+value["name"] );
});

each 를 사용해서 간단 합니다.

미나리 / 2016/06/21 11:27:03 / 추천 0

음.. ajax success 부분에서 이상없이 실행이 되신다는거 보면요.

ajax 동기화 문제일 수 도 있어요. 뭐냐면 ajax는 비동기 방식이라 

ajax로 요청을 했으나 스크립트는 계속 진행 그 후에 ajax success 부분이 실행 이런식으로 진행이 되는 경우가 있어요.

확인 방법은 ajax success 부분과 스크립트 끝 부분에 각각 alert나 console.log 찍어보시면 

나중에 ajax success 부분이 늦게 실행되시면 ajax 비동기로 늦게 리턴받는 거에요.

그때는 ajax 옵션에 async:false 추가하시면 동기방식으로 변경됩니다.

코드이그맨 / 2016/06/21 12:47:04 / 추천 0

답글 감사합니다!

 

 

일단 success : function(){

 

}

 

위 함수부분에서 -_- 불러와서 돌리는걸로 일단, 그렇게 하고있는데..

카이도님이 알려주신 방법은 일단 다 만들고 나서 한번 수정해서 다시 해보도록 할게요.

미나리님도 답변 감사합니다.