뷰페이지 비동기 처리
본문
그누보드 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>
ajax로 불러오는게 화면전체를 뿌려서 그러신 것 같은데 원하시는 부분만 불러오게 수정하셔서 뿌려주시면 될 것 같습니다.
view.php 파일은
board.php 파일에 include 되어 있습니다.
기본적으로 board.php 에서 일정한 역할을 수행한 후 view.php 파일에 할당된 역할을 하기 때문에
view.php 파일만 불러온다고 해서 데이터가 나올수는 없습니다.
board.php 파일과 view.php 파일을 분석하신 후
별도의 파일을 만들어서 호출을 하시거나,
ajax에서 board.php 파일을 호출 하시되, 별도의 값을 함께 보내줘서 해당 값이 있을 경우에는
board.php에서는 특정 부분이 수행되지 않도록 한다든가 하는 형태로 board.php 파일을 수정해 줘야 합니다.