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

ajax 로 뷰 페이지를 부를때 div에 안 들어감 채택완료

더루차 2년 전 조회 2,816

https://sir.kr/g5_skin/53077">그누보드 - 리스트에서 내용보기 게시판 > 그누보드5 스킨 (sir.kr)

위 스킨에서 착안하여 

https://sir.kr/g5_skin/45425">그누보드 - 오피스 멀티뷰어 자료실 게시판 > 그누보드5 스킨 (sir.kr)

이 스킨을 활용해 뷰 쪽에 pdf나 ppt 등을 보여주게 하고 싶어서 

ajax로 구현하여 부르면 <div class ="view" > 쪽에 들어가는게 아닌 완전히 새로운 페이지로 들어가 버립니다.

list.skin.php

</p>

<p><div class="view"></p>

<p>   </p>

<p><?php</p>

<p>#include_once(G5_BBS_PATH."/view.php");?></p>

<p></div></p>

<p> </p>

<p></div></p>

<p>    <script></p>

<p>        $(document).on('click', '.bo_tit', function(e){</p>

<p>            $.ajax({</p>

<p>                url:'<?php echo $board_skin_url?>/view_ajax.php',</p>

<p>                type:'POST',</p>

<p>                data:'bo_table='+$(this).attr('data-table')+'&wr_id='+$(this).attr('data-id'),</p>

<p>                dataType:'html',</p>

<p>                success : function(data){</p>

<p>                    $('.view').html(data);</p>

<p>                }</p>

<p>            });</p>

<p>        });</p>

<p>

 

view_ajax.php

</p>

<p><?php</p>

<p>include_once('../../../../../common.php');</p>

<p> </p>

<p>$bo_table = $_POST["bo_table"];</p>

<p>$wr_id = $_POST["wr_id"];</p>

<p>?></p>

<p> </p>

<p><?php include_once(G5_BBS_PATH."/view.php");</p>

<p>?>

 

로 구현하였습니다 현재는

리스트에서 눌렀을때 화면입니다. 여기서 다른 리스트를 클릭하면

이런식으로 전체 화면 자체를 다 가져가 버립니다.

개발자 도구로 확인하면 응답쪽에선 다른 항목들도 표시가 되는데 

다 지워버리고 뷰어 항목만 표시가 되는데 ajax 쪽을 손봐야 할까요?

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

답변 4개

채택된 답변
+20 포인트
2년 전

* view_ajax.php

</p>

<p><?php

include_once('../../../../../common.php');

 

$bo_table = $_POST["bo_table"];

$wr_id = $_POST["wr_id"];</p>

<p>$write_table = $g5['write_prefix'] . $bo_table;</p>

<p>$sql = "

    select *

      from {$write_table}

     where wr_id = '{$wr_id}'

";</p>

<p>$view = sql_fetch($sql);</p>

<p>$html = 0;

if (strstr($view['wr_option'], 'html1'))

    $html = 1;

else if (strstr($view['wr_option'], 'html2'))

    $html = 2;</p>

<p>$view['content'] = conv_content($view['wr_content'], $html);</p>

<p>echo $view['wr_content'];</p>

<p>

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

답변에 대한 댓글 2개

더루차
2년 전
댓글 정말 감사합니다

올려주신 코드로는 입력한 게시글 내용만 표시가 되고 있습니다
제가 생각했던건 비타주리님의 멀티 게시판
즉, 첨부파일에 pdf 나 ppt 같은 파일이 있을때 바로 뷰어로 보여주는 스킨을 사용하고 있어서
bbs/view.php 자체를 불러오고 싶은 상황입니다
더루차
2년 전
방금 다시 확인 해보니 뷰어 파일과 안 맞는 것 같습니다 뷰어 파일 include를 빼니 정상적으로 잘 작동하는데 제일 중요한 뷰어가 빠져버리니..

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

2년 전

</p>

<p><style></p>

<p>@import url(<a href="http://cdn.jsdelivr.net/font-nanum/1.0/nanumbarungothic/nanumbarungothic.css);" target="_blank" rel="noopener noreferrer">http://cdn.jsdelivr.net/font-nanum/1.0/nanumbarungothic/nanumbarungothic.css);</a></p>

<p>#viewerDiv { position:relative; height:0px; overflow:hidden; max-width:100%; }</p>

<p>#viewerIframe { position:absolute; top:0px; left:0px; width:100%; height:100%; display:block; }</p>

<p>.listTd { font-size:16px; color:#000000; font-family:'Nanum Barun Gothic'; padding:12px; text-align:center; cursor:pointer; background-color:#eeeeee; }</p>

<p></style>    </p>

<p><script></p>

<p>officeList = [".pdf", ".ppt", "pptx", ".doc", "docx", ".xls", "xlsx"];</p>

<p>function viewerFile() {</p>

<p>    officeNumber = 0;</p>

<p>    for (office in officeList) if (officeList[office] == arguments[0].toLowerCase().slice(-4)) officeNumber += 1;</p>

<p>    if (officeNumber < 1) viewerOffice = "지원하지 않는 파일 형식입니다. 다운로드 받아 확인 하세요";</p>

<p>    else viewerOffice = "<iframe id=viewerIframe src=<a href="https://docs.google.com/gview?url="" target="_blank" rel="noopener noreferrer">https://docs.google.com/gview?url="</a> + arguments[0] + "&embedded=true frameborder=0></iframe>";</p>

<p>    viewerDiv.innerHTML = viewerOffice;</p>

<p>    viewerDiv.style.paddingBottom = arguments[1] + '%';            </p>

<p>}</p>

<p> </p>

<p>viewerHeight = [<?php echo $view['wr_1']; ?>];</p>

<p><?php</p>

<p>for ($i=0; $i<count($view['file']); $i++) {</p>

<p>    if (isset($view['file'][$i]['source']) && $view['file'][$i]['source'] && !$view['file'][$i]['view']) {</p>

<p>?></p>

<p>downHref = "<?php echo $view['file'][$i]['href']; ?>";</p>

<p>this["viewer_" + <?php echo $i + 1; ?>] = ["<?php echo $view['file'][$i]['path']."/".$view['file'][$i]['file']; ?>", "<?php echo $view['file'][$i]['source']; ?>", downHref.replace(/amp;/gi, ""), viewerHeight[<?php echo $i; ?>]];</p>

<p><?php</p>

<p>    }</p>

<p>}</p>

<p>?></p>

<p>document.write("<div id=viewerDiv style=width:100%></div>");</p>

<p>document.write("<table style=width:100%;table-layout:fixed;background-color:#cccccc;margin-top:6px cellpadding=0 cellspacing=1>");</p>

<p>document.write("<col width=80%></col><col width=20%></col>");</p>

<p>for (viewerTotal = 0; this["viewer_" + (viewerTotal + 1)]; viewerTotal++);</p>

<p>for (file = 1; file <= viewerTotal; file++) {</p>

<p>    document.write("<tr><td id=file_" + file + " class=listTd>" + this['viewer_' + file][1] + "</td><td id=download_" + file + " class=listTd>다운로드</td></tr>");</p>

<p>    this["file_" + file].thisNum = this["download_" + file].thisNum = file;</p>

<p>    this["file_" + file].fileSrc = this['viewer_' + file][0];          </p>

<p>    this["file_" + file].onclick = function() {</p>

<p>        viewerFile(this.fileSrc, parent["viewer_" + this.thisNum][3]);</p>

<p>        for (file = 1; file <= viewerTotal; file++) {</p>

<p>            parent["file_" + file].style.backgroundColor = parent["download_" + file].style.backgroundColor = '#eeeeee';</p>

<p>        }</p>

<p>        parent["file_" + this.thisNum].style.backgroundColor = '#f7d7e4';</p>

<p>        parent["download_" + this.thisNum].style.backgroundColor = '#d5e6f9';</p>

<p>        scrollTo(0, 0);</p>

<p>    }</p>

<p>    this["download_" + file].onclick = function() {</p>

<p>        location.href = parent['viewer_' + this.thisNum][2];</p>

<p>    }</p>

<p>}</p>

<p>document.write("</table>");</p>

<p>file_1.onclick();</p>

<p></script></p>

<p>

제 코드는 아니지만 스킨의 office.php 파일의 소스코드 입니다. 

여기서 문제가 되는 코드가 있을까요?

파일 첨부가 안 되어서.. 댓글로 올립니다

문제시 바로 삭제하겠습니다

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

답변에 대한 댓글 4개

엑스엠엘
2년 전
Document.write가 수상하긴한데
자세한 거는 해당 페이지를 봐야
알 수 있을 듯합니다
더루차
2년 전
@엑스엠엘 lib.songwol.com/sw0101 입니다!
엑스엠엘
2년 전
파일 이름이
그누보드 기본파일도 아니군요.
해당 페이지 주소(URL)을 올려 보세요.
더루차
2년 전
URL 이 lib.songwol.com/sw0101 입니다

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

$('.view').html(data);

.view가 여러 곳일 수 있겠네요

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

답변에 대한 댓글 2개

더루차
2년 전
댓글 감사합니다 ^^
위에 eyekiss님이 말씀하신대로 이름도 바꿔보고 했는데 같은 상태입니다
엑스엠엘
2년 전
해당 페이지 주소(URL)도 올려 보세요.

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

e
2년 전

<div id="view_content" >

이렇게 id 로 변경을 하시고..

                success : function(data){
                    $('#view_content').html(data);
                }

결과값을 아이디로 지정해서 넣어보세요.

 

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

답변에 대한 댓글 5개

초보라힘드네요
2년 전
좋은정보 감사합니다.
더루차
2년 전
댓글 감사합니다 ! 말씀하신대로 해보았는데 똑같은 상황입니다
더루차
2년 전
방금 다시 확인 해보니 뷰어의 파일과 뭐가 안 맞는 것 같습니다 뷰어 파일 include를 빼니 정상적으로 잘 작동하는데 제일 중요한 뷰어가 빠져버리니..
e
eyekiss
2년 전
view.skin.php 파일에서 스크립트 오류가 나는것 같습니다.
개발자도구(F12)로 확인을 해보세요.
더루차
2년 전
@eyekiss 혹시나 해서 뷰어 스킨의 코드를 댓글로 올려 두었습니다

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

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

로그인