미채택 완료

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

2021-12-09 (목) 20:09:33 3,926

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

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

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

Copy
<?php
include_once('./_common.php');
include_once(G5_LIB_PATH.'/json.lib.php');

$name = isset($_REQUEST['name']) ? strip_tags($_REQUEST['name']) : '';
$bo_table = 'consultant';

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; // 게시판 테이블 전체이름
    }
}

$data = array();

 

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

/*$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']) = '등록된 컨설턴트가 없습니다'));*/

 

$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);

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'];
}

$data['error'] = '';

die(json_encode($data));

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

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

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

list.skin.php

Copy
btn.addEventListener('click', function(e){
        e.preventDefault();

        var name = this.dataset.name;

        $.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);

                console.log(obj);
            },
            error: function(){
                alert('json not found');
            }
        });
    });

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

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

답변 2개 / 댓글 4개

2021-12-09 (목) 21:59:12

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

답변에 대한 댓글 1개

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

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

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

지금은 출력 잘 됩니다! 감사합니다!
2021-12-09 (목) 20:26:53

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

다음글의 소스를 참고하는 게 좋을 듯 싶습니다. 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개

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

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

제가 참고할만한 자료가 있을까요?? 다시 한번 답변주셔서 감사드립니다!
2021-12-10 (금) 15:13:23
업무에서나 여기 Q&A 에서나 addEventListener 를 쓰는 경우는 거의 못본 것 같아서.. 그렇게 생각하고 있었는데요..

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

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

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