llaay
280
2020-03-25 14:39:44
4
167

[spring] onclick 으로 팝업창을 만든 후, DB insert 시 데이터가 중복저장됩니다


현재 쪽지 기능을 구현하고 있습니다

ajax 를 통해 값을 DB 로 넘겨 값을 insert 시키도록 하고, success 시 window.close() 를 하도록 구현했고

send 테이블은 정상이나, receive 테이블에서 값이 누적되고 있습니다.

DB를 확인하니.. 아래 이미지와 같이 새로운 값이 저장될 때, 기존값이 한 번 더 누적 저장되고 있습니다..

코드가 중복된 곳은 없는데 window.close() 가 제대로 작동이 안되어 데이터가 누적되는건지..

send 에서 사용한 트리거의 문제인건지..

조언 좀 부탁드립니다



.jsp

		var log=$('#log').val();
		var nick=$('#client_nick1').val();
		
		
		if(log=='' || log==nick) {
		} else {
			$('#sendMsg').on('click',function() {
				var childForm;
				var data=$('#client_nick1').val();
				childForm=window.open('../../partner/msg='+data,'쪽지보내기','width=470, height=330, left=500, top=50');
				
			});
		}

팝업

		$('#sendMsg').on('click',function() {
			var sender=$('#client_nick1').val();
			var receivcer=$('#client_nick2').val();
			var content=$('#send_content').val();
		
			$.ajax({
				url:'../partner/msg={id}',
				type:'POST',
				data:{client_nick1:sender, client_nick2:receivcer, send_content:content},
				success:function() {
					alert('메세지가 전송되었습니다');
					window.close();
				},
				error:function() {
					alert('다시 시도해주세요');
				}
			});
		});

send 테이블 트리거

BEGIN
insert into receive (client_nick1, client_nick2, receive_content, receive_date) (select client_nick1, client_nick2, send_content, send_date from send) ;
END


감사합니다

0
0
  • 답변 4

  • SDFD
    149
    2020-03-25 14:51:16

    e.preventDefault() 이거였나?

    설정해주시고


    a태그로 클릭하게 만드셨다면 href 제거해보세요

    0
  • 한경닷컴교육센터
    3k
    2020-03-25 14:55:22

    (select client_nick1, client_nick2, send_content, send_date from send)

    --> 이거할때 이미 많이 나오지 않을까요? 뭔가 조건이 있어야 할꺼같은데요 

    0
  • 치느님이진리
    477
    2020-03-25 15:09:12

    전 예전에 <form> 태그에 return false 안해줘서 form 전송 + ajax 전송 되어서 2번씩 저장되었던 경험이 있습니다. 이 부분도 한번 체크 해보세요.

    0
  • llaay
    280
    2020-03-25 15:34:45

    답변들 달아주셔서 감사합니다!

    한경닷컴교육센터 님 말씀주신대로, 조건이 없어

    모든 로우를 다 가져와서 추가되었더라구요!

    오전내내 고민하던 게 바로 해결되었습니다

    정말정말 감사합니다! 또 이렇게 하나 배웠습니다!

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.