Ajax 이용 본문 열기 - 다 되는데 마지막 하나가 안됩니다.

Ajax 이용 본문 열기 - 다 되는데 마지막 하나가 안됩니다.

QA

Ajax 이용 본문 열기 - 다 되는데 마지막 하나가 안됩니다.

본문

안녕하세요.
Ajax로 본문 내용 불러오는 것에 대해 질문 드립니다.
 
-목적 : 게시판에서 목록을 누르면 'list.skin.php' 안에 있는 특정 div 내부에 Ajax로 해당 글을 불러오고자 합니다.
 
먼저 성공한 부분까지 말씀드리겠습니다. 
우선 'list.skin.php' 문서 안에 아래와 같이 Jquery를 이용한 Ajax 스크립트를 작성했습니다.
 


<script type="text/javascript" src="<?=$g4['path']?>/js/jquery-1.7.2.min.js"></script>
 
<script type="text/javascript">
 $(document).ready(function() {
  $('.button').click(function(){ //버튼
   $.ajax({
    type : "POST" //"POST", "GET"
    , async : true //true, false
    , url : "./board.php?bo_table=<?=$bo_table?>&wr_id=<?=$list[$i][wr_id]?>" //주소
    , dataType : "html" //전송받을 데이터의 타입
    , cache : false  //true, false
    , data : "" //서버에 보낼 파라메터 "a=b&c=d" 문자열로 직접 입력 가능
    , contentType: "application/x-www-form-urlencoded; charset=UTF-8"
    , error : function(request, status, error) { //통신 에러 발생시 처리
     alert("code : " + request.status + "\r\nmessage : " + request.reponseText);
    }
    , success : function(response, status, request) { //통신 성공시 처리
     $('#result').append(response);  //내용이 들어올 자리  
    }
    , beforeSend: function() { //통신을 시작할때 처리
     $('#ajax_indicator').show().fadeIn('fast'); 
    }
    , complete: function() { //통신이 완료된 후 처리
     $('#ajax_indicator').fadeOut();
    }
   });
  });
 });
</script>
 
 
<!--아래는 내용이 들어올 자리 -->
<div id="result" style="width:500px;height:300px"></div>
 
 
 

그 다음 'list.skin.php'의 목록이 표시되는 부분 즉,

echo "<a href='{$list[$i][href]}'>{$list[$i][subject]}</a>";
 
이 부분에서 링크(href) 부분은 빼야 겠죠. Ajax 스크립트 안에 url 쓰는 곳이 있으니까요...
아래와 같이 링크 부분은 빼고 button이라는 이름으로 class를 지정합니다.

echo "<a href='' class='button'>{$list[$i][subject]}</a>";
 
이제 목록의 제목을 누르면 class='button'이 스위치 역할을 하면서 Ajax 스크립트를 작동 시키고, 스크립트 안에 들어있는 URL에 따라 본문 내용이 'list.skin.php' 안에 있는 id="result" 라는 div 박스 안으로 들어옵니다.
즉, 새로고침 없이 목록에서 본문이 나타나는 것이죠.
 
그런데 문제는 저 Ajax 스크립트에 있는 url 부분에 전체 경로를 다 적어주면 잘 열리는데 변수로 적어주면 안되는군요.
./board.php?bo_table=test&wr_id=3  이렇게는 되는데
./board.php?bo_table=<?=$bo_table?> &wr_id=<?=$list[$i][wr_id]?> 이렇게는 안된다는 것이죠.
참고로 저 url 부분에 <?=$list_href?>를 직접 써줘도 안먹힙니다.
 
이 문제의 해결 방법을 알려주시면 참 감사하겠습니다.
이게 해결되면 저처럼 초보들에게 엄청 도움이 될 겁니다.
왜냐면 일반 웹에서 페이지 전체를 Ajax로 불러오는 것은 딱히 필요도 없고 뒤로가기가 안되니까 오히려 불편하기만 하지만 웹앱을 만들 때는 얘기가 다르기 때문입니다.
화면 깜빡임 없이 페이지 전환이 되므로 감쪽같이 네이티브 앱 흉내를 낼 수 있고 굳이 Jquery Mobile을  쓰지 않아도 되구요...

그럼 다들 새해 복 많이 받으시고 건강하십시오.
 

이 질문에 댓글 쓰기 :

답변 3

$(document).ready(function() {
   var bo_table = <?php echo $bo_table;?>;
   var wr_id    = "";
   $('.button').click(function(){ //버튼에 wr_id 값을 붙여주어야 할 것 같습니다 :-)
   wr_id = $(this).attr("data-wr_id");
   $.ajax({
       type : "POST" //"POST", "GET"
      ,async : true //true, false
      , url : "./board.php?bo_table=" + bo_table + "&wr_id=" + wr_id,


html 은 아래와 같이 되겠군요.

<button class="button" data-wr_id="<?php echo $list[$i][wr_id]; ?>">버튼</button>
내용을 보니
AJAX 문제라기 보단, list로 쿼리하는 부분을 먼저 체크해 보시는게 좋겠네요.
$list[$i][wr_id] 나 <?=$list_href?>
둘 모두 지정이 제대로 되어있는지를요..
 
testers 님 감사합니다.
됩니다. 돼요^^
천재십니다.   정체가 뭔가요^^
 
운비 님도 감사드리구요...
 
일단 제목이 나오는 {$list[$i][href]} 를 지우고 따로 버튼으로 돌린 것까지는 제가 하긴 했었는데 왜인지는 모르겠으나 <?=$bo_table?>까지는 Ajax가 인식을 하는데 <?=$list[$i][wr_id]?> 이걸 죽어도 인식을 안해서 고민했었거든요.
 
암튼 <?=$bo_table?>까지는 인식을 했으니까 적어주신 것 중 맨 위에 줄
 
var bo_table = <?php echo $bo_table;?>;
 
이건 지우고 url 부분엔
 
./board.php?bo_table=<?=$bo_table?>" + "&wr_id=" + wr_id
 
요렇게 한다음 나머지는 적어주신대로 했더니 됩니다.
정말 정말 감사드립니다.
새해 복 많이 받으실거예요.
이건 간추려서 팁에 올려놓겠습니다.
정말 고맙습니다.
 
수고하세요.
답변을 작성하시기 전에 로그인 해주세요.
전체 16
QA 내용 검색

회원로그인

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