ajax로 동기식을 쓰고 있는거 같은데...조언좀 부탁드립니다.

ajax로 동기식을 쓰고 있는거 같은데...조언좀 부탁드립니다.

QA

ajax로 동기식을 쓰고 있는거 같은데...조언좀 부탁드립니다.

본문

완전 쌩 초짜입니다.

스크랩형식을 가져와서

게시판 즐겨찾기를 만들려고 하고있어요

 

현재 폼을 이용해서

sumit으로 데이터를 전송하고 있는데요.

구글링하다보니 서밋을 사용해서 폼을 날리는건 그냥 동기식이라는 글을봤어요.

 

폼으로 날리는게 그나마 제가 이해가 가능한 부분이라서..그렇게 했는데..

폼을 이용해서 ajax를 비동기식으로 처리가 가능하려면

어떤식으로 처리해야할지 조언이 좀 필요한거 같아요.

 

혹은 폼이 아닌 그냥 비동기식으로 가져가려면 뭐뭐를 새롭게 작성해야할지 잘 몰라서

조언좀 부탁드립니다.

 

 

ps. 혹시 데이터를 전송하는거 말고, 삭제를 하려면, remove라는걸 써야할까요?

 

 


 
<!----------------폼------------>
<form name="favoriteInfo" action="<?php echo G5_BBS_URL?>/favoite_add.php" method="post"> 
    <input type="hidden" name="bo_table" value="<?php echo $bo_table ?>">
    <input type="hidden" name="mb_id" value="<?php echo $mb_id ?>">
</form>
<!----------------폼끝------------>
 
 
<!----------------버튼------------>
<?php if ($favorite_href) { ?>
<a href="javascript:;" onclick="favorite_submit()" class="btn btn-black">추가하기</a>
<?php } ?>
<!----------------버튼끝------------>
 
 
 
<!----------------스크립------------>
<script type="text/javascript">
function favorite_submit() {
var form = $("form[name=favoriteInfo").serialize();
$.ajax({
    url: g5_bbs_url+"/favoite_add.php",
    type: "POST",
    cache: "false",
   data: form,
      success: function(data) {
          alert("<?php echo "{$board['bo_subject']}" ?> 을 추가하였습니다");         
      }, 
      error: function() {
           alert("실패");
      }        
});
}
</script>

이 질문에 댓글 쓰기 :

답변 2

favoite_add.php 의 코드는 어찌 되는지요?

 

데이터를 삭제하려면 input value 를 진공으로 해 주고 submit 시키면 됩니다만...

그리고 너무 아작스에 집착하지 않으셔도 됩니다.

적정한 시점에서 새로고침 해 주는 로직을 넣을 줄 알면 특별한 상황이 아니라면 그게 그거거든요.

미디어나 유튜브의 재생시점을 신경 써야할 때라거나 등등 특별히 실시간이 필요하지 않으면요.

아 스크랩형식을 그대로 가져와서 쓰는거라..

favoite_delete.php 가 따로있는데.

favoite_delete.php 는 아래형식처럼 간단히 되어있고..

if (!$is_member)
    alert('회원만 이용하실 수 있습니다.');

$sql = " delete from {$g5['scrap2_table']} where mb_id = '{$member['mb_id']}' and ms_id = '$ms_id' ";
sql_query($sql);

favoite_add.php 코드는 아래처럼 해놨어요...

if(!$board[bo_table]) {
    alert('게시글이 존재하지 않습니다.');
}

$sql = " select count(*) as cnt from {$g5['scrap2_table']} where mb_id = '{$member['mb_id']}' and bo_table = '$bo_table' ";
$row = sql_fetch($sql);

sql_query("insert into {$g5['scrap2_table']} set mb_id = '{$member['mb_id']}', bo_table = '{$bo_table}' ");

그런데..진공으로 해준다는게 무슨 의미인지요? ()  비워둔다는걸 말씀하시는건지요

주리님!
데이터를 진공으로 submit 한다는 의미가 데이터를 빈값으로 보내서
현재 테이블을 빈값으로 교체한다는 말씀이신지요?  제가 잘 이해를 못하고 있어서요.

써주신 아래코드의 의미가 botable과 mbid의 값을 빈값으로 보낸다는 말씀이신가요
<button type=button onclick="bo_table.value=mb_id.value='';favoriteInfo.submit()">클릭</button>

말씀하신대로 해봤는데. favoite_add.php의 코드중에서 제가

if(!$board[bo_table]) {
    alert('게시판이 존재하지 않습니다.');
}
bo_table값이 없을때 얼럿창을 적어둔게 있는데

말씀하신 코드중에 onclick="bo_table.value=mb_id.value='';  bo_table 값이 빈값으로 들어가니깐
저 얼럿창이 뜨더라구요.

근데 데이터는 삭제변동이 없어서.

저 코드가 빈값 코드를 막는거 같은 생각이 들어 얼럿을 삭제를 해보기도하고 여러가지
테스트를 해보는데

phpmyadmin으로 확인하면서 해볼때
기존의 데이터가 삭제되는게 아니라
bo_table이 이름( 그동안은 게시판명으로 나왔음 )이 없는채로,  데이터에 저장이 되고 있더라구요.

그래서 제가 뭘 잘못이해하고 있나 싶어서...여쭤봅니다..

bo_table 나 mb_id 가 진짜 테이블명이고 아이디명이라면 그렇게 하면 안 되구요.
데이터를 비울 input 가 만일 wr_1 이라고 한다면 wr_1 을 진공으로 만들어야지요.
저는 그냥 데이터는 이런 식으로 비운다는 예시로 들었던 것입니다.

아하! 감사합니다
제가 초보라 이해가 좀 부족해서 ㅠ.ㅠ 한번에 알아듣게 쉽게 말씀해주셔서...
어제부터 주리님 답변 목빠지게 기다리고 있었어요~~
감사합니다~~

가장 소박한 것은

 

<form id="favoriteInfo" name="favoriteInfo" action="add.php" method="post"> 
    <input type="hidden" ib="bo_table" name="bo_table" value="어쩌구">
    <input type="hidden" id="mb_id" name="mb_id" value="저쩌구">

    <button type="submit">클릭</button>
</form>

 

위와 같이 로직을 짰다면  add.php 에서는

 

$_POST['bo_table']
$_POST['mb_id'] 으로 받아 로직을 구성하고

 

add.php 의 가장 마지막 줄에 새로고침 후 이전페이지로 가는 코드를 주면 가장 쉬울 것 같은데요.

 

<script>location.href = document.referrer;</script>

 

----

 

그리고 폼 바깥에 버튼을 하나 만들고

아래 코드를 주면 데이터가 진공으로 날아가구요.

폼을 만들 때는 id 를 꼭 주세요. 그래야 자바스크립트 핸들링이 무진장 쉬워집니다.

자바스크립트는 name 이 아니라 id 나 class 로 변차를 주거든요.

 

<button type=button onclick="bo_table.value=mb_id.value='';favoriteInfo.submit()">클릭</button>

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

회원로그인

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