뷰페이지 비동기 처리

뷰페이지 비동기 처리

QA

뷰페이지 비동기 처리

본문

그누보드 QA - 게시판 뷰페이지와 리스트페이지 동시에 (sir.kr)

의 방식을 사용하여 

board.php -> board2.php 로 이동 div 두가지로

왼쪽엔                                                             오른쪽

list.php                                                           view.php

 

으로 작업해 두었습니다. 

문제는 이전의 질문을 통해 ajax 방식을 view.php의 비동기를 하려고 시도해보았는데


<div id ="rist" style="float:left;width:30%;height : 700px;overflow-y : scroll;">
 
<?php
include_once (G5_BBS_PATH."/list2.php");
 
if(!$wr_id) $wr_id= $list[0][wr_id];
 
?>
 
</div>
 
<div id = "biew" style='float:right;width:70%;padding: 0px 10px 0px 10px; height :700px;overflow-y : scroll;'></div>
 
<script>
$(function(){
    $.ajax({
        url : '<?php echo G5_BBS_URL?>/view.php',
        type : "post",
        dataType : "html",
        data : {
            bo_table : '<?php echo $board["bo_table"]?>',
            wr_id : <?php echo $wr_id?>
        },
        error : function(error) {
            alert("ERROR!"+error);
        }, // error end
        success : function(view) {
            // 먼저 alert(view.responseText); 값이 어떤게 나오는지 확인해보세요
            $("#biew").html($(view.responseText))
        } // success end
    });
});
</script>
 
<?php include_once(G5_PATH.'/tail.sub.php');?>

로 구현해 두었습니다 

list2.php에서 선택하면 view.php의 페이지만 새로 불러와서 깜빡임 없이 불러왔으면 좋겠습니다.

어떤 부분을 수정해야 제대로 나올지 모르겠습니다. 

 

지금은 <div> biew  쪽엔 아무것도 나오지 않고 있는 상태입니다


,success:function(view){
            $("#biew").load(view)

의 방식을 사용하면 화면전체가 biew 쪽으로 표시됩니다

 

어떻게 해야 원하던 대로 구현을 할 수 있을까요

아니면 list2.php 쪽도 같이 비동기로 구현해야 나오는지.. 고민이 많습니다

이번 기회로 ajax 공부를 좀 하려고 했는데 PHP를 이용한 부분도 많이 없어서..

아예 iframe 쪽으로 바꿔야 할까요? 다들 사용하지 말라고 하셔서 ajax쪽으로 알아 봤던 부분인데

이 질문에 댓글 쓰기 :

답변 3

원하시는게 이게 맞는지 모르겠네요.


왼쪽은 리스트 출력 오른쪽은 뷰 내용출력
첨 접속시 젤 마지막글 보여줌

 

스킨폴더에 view.php 생성 free 사용게시판 아이디로 수정

<?php
//include_once('../../../common.php'); // 테마 아닐때
include_once('../../../../../common.php');
$view_sql="select * from g5_write_free where wr_id=".$_POST["wr_id"];
$view_row=sql_fetch($view_sql);
echo $view_row["wr_content"];
?>

 

리스트 참고해서 수정

<div id="list">
<?php for ($i=0; $i<count($list); $i++) {
<div class="view_con" data-id="<?php echo $list[$i]['wr_id'] ?>" style="cursor:pointer;">
<?php echo $list[$i]['subject'] ?>
</div>
<?php } ?>
</div>

 

뷰 내용이 출력 할곳

<div id="view">
<?php
$write_table = $g5['write_prefix'].$bo_table;
$row = sql_fetch(" select wr_content from {$write_table} where wr_is_comment = 0 order by wr_id desc limit 1 ");
echo $row["wr_content"];
?>
</div>

 

리스트 하단에 추가

<script>
$(document).on('click', '.view_con', function(e){
$.ajax({
type:'POST',
url:'<?php echo $board_skin_url; ?>/view.php',
data:'wr_id='+$(this).attr('data-id'),
dataType:'html',
success : function(data){
$('#view').html(data);
}
});
});
</script>

이 코드들 모두 board2.php 쪽에 입력하면 될까요 ??
올려주신 코드는 모두 새로 만들어 내는 작업인듯 싶어서요

제가 바라던것은 list.php의 화면을 <div>rist 쪽에 표시해주고 거기서 입력받은 값을 전달해
비동기로 view.php의 화면을  <div>biew 쪽에 나타내주고 싶었습니다.

위 소스는 list.skin.php에 넣는것입니다.
게시판 접속하면 왼쪽은 리스트 오른쪽은 내용 이걸 원하시는게 아닌가요?
이게 아니라면 board.php 이건 전체 게시판에 다 영향을 받는데...
정확히 뭘 원하시는질 모르겠네요.

제 설명이 부족했나보네요.. 죄송합니다
전체 게시판 모두를 자료실 형식으로 할 예정이라 왼쪽엔 리스트 오른쪽엔 비동기로 뷰 화면을 보여주려고 했었습니다
말씀하신대로 추측하면 board.php 쪽에다 작업하면 되는 부분일지요..

전체 게시판을 다 하시더라도 어째든 스킨은 쓰셔야 할것 같은데요.
굳이 원본을 수정할 필요없이 스킨에서 처리하시면 되는거 아닌가요?
https://sir.kr/g5_skin/53077 참고요

pdf나 ppt 같은 파일을 바로 보여주는 다른 스킨을 사용하고 있는터라 두가지를 연동하여 사용하려고하니 조금 더 어려운 부분이 있는 것 같습니다 올려주신 스킨은 확인 하였구 참고해서 한번 더 작업해 보겠습니다! 감사합니다

ajax로 불러오는게 화면전체를 뿌려서 그러신 것 같은데 원하시는 부분만 불러오게 수정하셔서 뿌려주시면 될 것 같습니다.

댓글 감사합니다 view.php 를 호출하게 되면 기본 뷰 페이지가 <div id='biew'> 안에서 나오게 됩니다 말씀하신 화면 전체라는 게 view.php에서 생성되는 화면 말씀이실까요? 아니면 인클루드한 head나 tail 을 제외한 새 파일을 만들어야 할까요?

view.php 파일은

board.php 파일에 include 되어 있습니다.

기본적으로 board.php 에서 일정한 역할을 수행한 후 view.php 파일에 할당된 역할을 하기 때문에

view.php 파일만 불러온다고 해서 데이터가 나올수는 없습니다.

board.php 파일과 view.php 파일을 분석하신 후

별도의 파일을 만들어서 호출을 하시거나,

ajax에서 board.php 파일을 호출 하시되, 별도의 값을 함께 보내줘서 해당 값이 있을 경우에는

board.php에서는 특정 부분이 수행되지 않도록 한다든가 하는 형태로 board.php 파일을 수정해 줘야 합니다.

댓글 감사합니다
현재는 board.php 에서 기존 view.php를 호출하는 구문 바로 위에서 board2.php를 호출하여 div 두개에 각각 list.php , view.php 를 넣어주고 있는 중입니다
이러한 상태에서도 따로 만들어 줘야 하는 부분일까요?

<div>
    <div>
        <!---게시판목록--->
        <div>글제목</div>
        <div>글제목</div>
    </div>
    <div id="view">게시판뷰</div>
</div>

구조가 이런 형태로 되어 있으실 건데.
글 제목을 클릭 시 ajax로 호출하여 해당되는 데이터를 게시판 뷰에 보여주는 방식입니다.
이때 ajax로 호출하는 파일은 기존의 파일을 호출한다기 보다는
기존의 board.php와 view.php 파일을 분석하여 새로 파일을 만드시는 게 좋으실거라 봅니다.

아주 단순하게 한다면 아래와 같은 형태라고 생각하시면 됩니다.
$(document).on('click','글제목',function() {
$.ajax({
        url : '<?php echo G5_BBS_URL?>/ajax_view.php',
        type : "post",
        data : {bo_table:<?php echo $bo_table;?>,wr_id:wr_id}
        success: function(data) {
            var html = data.html;
            $('#view').empty().html(html) 
        }
});
});

ajax.view.php

$sql = "select * from 게시판 where wr_id = '$wr_id''";
$res = sql_fetch($sql);
$data['html'] = conv_content($view['wr_content'], 1);
die(json_encode($data));

답변을 작성하시기 전에 로그인 해주세요.
전체 26
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT