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

게시판 리스트에서 ajax로 클릭한 게시글의 데이터를 json으로 가져와 모달창으로 띄우기 채택완료

coDribble 3년 전 조회 3,535

뷰페이지를 안쓰고, 리스트페이지에서 해당 게시글을 클릭하면 클릭한 게시글의 db을 json으로 가져와서

 

해당 데이터들을 모달로 띄우려고 합니다...;;

 

/bbs/ajax.consultant.php    <-- 새로 추가한 페이지

</p>

<p><?php

include_once('./_common.php');

include_once(G5_LIB_PATH.'/json.lib.php');</p>

<p>$name = isset($_REQUEST['name']) ? strip_tags($_REQUEST['name']) : '';

$bo_table = 'consultant';</p>

<p>if ($bo_table) {

    $board = get_board_db($bo_table, true);

    if (isset($board['bo_table']) && $board['bo_table']) {

        set_cookie("ck_bo_table", $board['bo_table'], 86400 * 1);

        $gr_id = $board['gr_id'];

        $write_table = $g5['write_prefix'] . $bo_table; // 게시판 테이블 전체이름

    }

}</p>

<p>$data = array();</p>

<p> </p>

<p>// 작동이 안되는 이슈로 주석처리</p>

<p>/*$sql = " select wr_subject, wr_content, wr_1, wr_2, wr_3, wr_4

            from {$write_table}

            where wr_subject = '$name' ";

$consultant = sql_fetch($sql);

if( !$consultant['wr_subject'] )

    die(json_encode($data['error']) = '등록된 컨설턴트가 없습니다'));*/</p>

<p> </p>

<p>$sql = " select wr_subject, wr_content, wr_1, wr_2, wr_3, wr_4

            from {$write_table}

            where wr_subject = '$name' ";

$consultant = sql_query($sql);</p>

<p>for($i=0;$row=sql_fetch_array($consultant);$i++){

    $data['name'] = $row['wr_subject'];

    $data['position'] = $row['wr_1'];

    $data['career1'] = explode('|', $row['wr_2']);

    $data['career2'] = explode('|', $row['wr_3']);

    $data['education'] = $row['wr_4'];

    $data['desc'] = $row['wr_content'];

}</p>

<p>$data['error'] = '';</p>

<p>die(json_encode($data));</p>

<p>

 

이렇게 json 으로 뿌려주게끔 만들어놓았습니다.

 

리스트페이지에 게시글마다 클릭한 게시글의 db만 가져오기위해

data-name="<?php echo $list[$i]['subject']; ?>" 속성을 넣어주고,

 

list.skin.php

</p>

<p>btn.addEventListener('click', function(e){

        e.preventDefault();</p>

<p>        var name = this.dataset.name;</p>

<p>        $.ajax({

            url: g5_bbs_url+'/consultant.php?name='+name,

            type: "POST",

            cache: false,

            async: true,

            dataType: "json",

            success: function(data){

                var obj = JSON.parse(data);</p>

<p>                console.log(obj);

            },

            error: function(){

                alert('json not found');

            }

        });

    });</p>

<p>

 

이렇게 구현을 했는데... 자꾸 에러쪽으로 넘어갑니다...;;

 

제가 json을 처음 다뤄보는데... 기존 영카트에 있는 ajax + json 으로 구현된 페이지와 여기저기서 찾아가며 얻은 정보를 가지고 작업했는데 계속 에러만 나서.. 문의남깁니다 ㅠㅠㅠㅠ

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

답변 2개

3년 전

일단 그냥 간단히 봤을땐 데이타 타입을 전해주셔서 obj로 따로 하실 필요는 없고 data.name 등으로 그냥 써주셔도 됩니다.

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

답변에 대한 댓글 1개

c
coDribble
3년 전
... 감사합니다;; 원인은... ajax url 앞에 ajax. 을 안붙여줘서 계속 에러 알럿이 떴던거네요;;ㅂㄷㅂㄷ;;

원래 consultant.php 로 만들어서 작업하다가 나중에 앞에다가 ajax. 을 붙여줬던건데..;;

리스트페이지에서 ajax 에 url 부분에는 추가를 안해줘서 계속 에러가 떴던거 같습니다ㅠㅠㅠ

지금은 출력 잘 됩니다! 감사합니다!

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

3년 전

전체적으로 잘못된 부분이 많아서..

다음글의 소스를 참고하는 게 좋을 듯 싶습니다. https://sir.kr/g5_skin/1080https://sir.kr/g5_skin/27519

 

jquery 로 onclick 이벤트를 처리하는 일반적인 방법은 다음과 같습니다.

(.addEventListener 는 자바스크립트에서 사용하지 않는 문법입니다.)

<a class="btn" href="#">Title</a>

<script>

$('.btn').on('click', function() {

~

});

</script>

 

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

답변에 대한 댓글 3개

c
coDribble
3년 전
답변 감사드립니다. jquery 는 잘(?)은 아니고 구현하는데 지장없을 정도는 알고 있습니다...
jquery를 먼저 배우다보니... 스크립트가 취약해서 스크립트를 손에 익히려고 되도록이면 스크립트로 구현하려고 하고 있습니다.

근데 하나 궁금한게 addEventListner 를 사용하지 않는다는건 처음 들어서 그런데... 말씀해주신걸 보고 구글링도 해봤는데 addEventListner 를 사용하지 않는다는 문서, 게시글은 찾아볼 수 가 없었는데요;;

제가 참고할만한 자료가 있을까요?? 다시 한번 답변주셔서 감사드립니다!
마르스컴퍼니
3년 전
업무에서나 여기 Q&A 에서나 addEventListener 를 쓰는 경우는 거의 못본 것 같아서.. 그렇게 생각하고 있었는데요..

찾아보니.. javascript 에서는 addEventListener 를 쓰는 것 같습니다.

죄송합니다. 이 부분은 제가 잘못 알았습니다.
c
coDribble
3년 전
아..! 또 이렇게 시간내서 알아봐주셔서 감사합니다!

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

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

로그인