잘되는데 너무 잘돼서 문젭니다.ㅠㅠ

잘되는데 너무 잘돼서 문젭니다.ㅠㅠ

QA

잘되는데 너무 잘돼서 문젭니다.ㅠㅠ

본문

ajax로 저장하는데요.

 

클릭하면 모달로 띄워지는 페이지에 ajax코드 넣었습니다.

저장하기 누르면 

    url: "<?php echo $board_skin_url?>/modal/ajax.update.php", 이렇게 해서 잘 저장됩니다.

 

그런데 내용을 보려고 띄우기만 하고 모달 닫고, 2번째는 모달 띄웠다가 저장하기 누르면

같은 내용이 2번 저장됩니다.

4번 띄웠다가 5번째 저장하면 같은내용이 5번 저장되구요

999번 띄웠다가 닫고 1000번째에 저장하기 누르면 1000번 저장됩니다.

실제로 1000번 해본거는 아니니 이해바라구요

 

왜 이러는 걸까요? 뭐 해결책이 없을까요?

늘 뭐가 안돼서 삽질인데...이젠 하다하다 너무  잘 돼서 걱정이네요..

 

이 질문에 댓글 쓰기 :

답변 3

이벤트를 여러번 바인드해서 그런거 같은데요.

버튼 클릭 할때마다 ajax 보내는 이벤트 바인딩을 하는지 확인하시고 그렇다면

바인딩을 해제하고 다시 바인드하는 방법으로 하시면 될 듯 하네요.

소스가 다 없어서 정확하지는 않지만..

창을 띄울때.. 초기화를 해야합니다.

전송하는 값을 초기화하여 다시 설정하도록..

빨른답변 감사합니다,!

$.ajax({
            url: "<?php echo $board_skin_url?>/modal/ajax.update.php",
            type: "POST",
            data: {
                "wr_id": wr_id,
                "bo_table": bo_table,
                "mb_id": mb_id,
                "wr_name": wr_name,
                "wr_subject": wr_subject

 
            },
            dataType: "text",
            async: false,
            cache: false,
            success: function(data, textStatus) {

            sql = data.sql;


            }
        });


      $('.modal_close').trigger('click') ;

vex.dialog.alert({
            message: '*저장되었습니다.',
            className: 'vex-theme-os'
            })



});


이렇게 되어 있습니다.

<script>
$(document).on('click', '.modal-state', function(){

 location.reload();

});
</script>
이렇게 넣어서 그냥 닫기하면 리프레쉬되서 저장은 안되는데...화면 전환이 있어 좋은방법은 아닌거 같습니다.

// 기존 wr_id 있으면
if(wr_id) {

 
  if ($s_idx == $s_idx) { //s_idx가 같으면 인서트


 $sql = "INSERT INTO g5_re_saving( mb_id, wr_name, wr_subject, wr_id, wr_datetime ) VALUES(

'".$mb_id."',
'".$wr_name."',
'".$wr_subject."',
'".$wr_id."',
'".G5_TIME_YMDHIS."'
)";



    } else { //다르면 업데이트
 $sql = "update g5_re_saving set mb_id='$mb_id', wr_name='$wr_name', wr_subject='$wr_subject', s_idx='$s_idx', wr_datetime='".G5_TIME_YMDHIS."' where wr_id = '$write[wr_id]' ";
    }


} else  {

 
//기존 wr_id가 없으면 인서트
 $sql = "INSERT INTO g5_re_saving( mb_id, wr_name, wr_subject, wr_id, s_idx,  wr_datetime ) VALUES(

'".$mb_id."',
'".$wr_name."',
'".$wr_subject."',
'".$wr_id."',
'".$s_idx."',

'".G5_TIME_YMDHIS."'
)";
}

// 실행하기
sql_query($sql);

이렇게 했는데 문제가 있을까요?

<span id="button_<?php echo $write[wr_id]; ?>" class="btn2" data-bo_table="<?php echo $bo_table?>" data-wr_id="<?php echo $write[wr_id]; ?>" >저장하기</span>
이렇구요,,

실행은 <script>
$(document).on('click', '#button_<?php echo $write[wr_id]; ?>', function(){

ajax코드

}

이런데요,,,왜 열엇다 닫은 데이터가 남아서 중복으로 저장되는지 모르겠습니다.

data: {
                "wr_id": wr_id,
                "bo_table": bo_table,
                "mb_id": mb_id,
                "wr_name": wr_name,
                "wr_subject": wr_subject
            },

여기 변수값들이 선언되는 부분이 없네요??

리스트에서 모달띄워 ajax로 저장하는것입니다.
$(document).on('click', '#button_<?php echo $write[wr_id]; ?>', function(){

  var wr_id = $(this).data("wr_id");
var bo_table = $(this).data("bo_table");


        var mb_id = $('#mb_id_<?php echo $write['wr_id'] ?>').val();
        var wr_name = $('#wr_name_<?php echo $write['wr_id'] ?>').val();
        var wr_subject = $('#wr_subject_<?php echo $write['wr_id'] ?>').val();
이렇게 되어 잇습니다.

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

회원로그인

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