반응형

가끔은 실무 개발중에 일어날수있는 문제들도 다뤄보고자 한다

form 태그를 사용하면서 ajax 도 태울시에 페이지가 새로고침 하는문제가 종종발생한다


1
2
3
4
5
6
7
8
9
10
11
12
13
var paramJson = {id : $("#_id").val(), pw : $("#_pw").val()};
 
$.ajax({
    type : 'POST'// Http Request Method로 POST로 지정
    url : "login.do"// 서버 요청 주소
    contentType : 'application/json;charset=UTF-8'// 서버 요청시 전송할 데이터가 UTF-8 형식의 JSON 객체임을 명시
    data : JSON.stringify(paramJson), // JavaScript 객체를 JSON 객체로 변환하여 서버 요청시 전송
    dataType : 'json'// 서버로부터 응답받을 데이터가 JSON 객체임을 명시하여 수작업 없이 응답 데이터를 JavaScript 객체로 획득
    success : function(res){alert(res.result);}, //callBackFunc(response)
    error : function(request, status, error){
        alert(error);
    }
});    
cs



이런식으로 ajax를 태우는데 

form 태그 내부의 버튼을 눌러서 발생되는 이벤트면 form 태그의 action을 타게되는것이다

해결방법은 이러하다


-방법1


1
2
3
4
5
6
7
8
9
10
<form name="data_form" method="post" action="./">
 
<!-- 클릭시 form(data_form)의 submit 동작을 하게 됨 -->
<button id="btn_example1">버튼 예제1</button>
 
<!-- 클릭시 submit 동작하지 않고 아무 반응 없음 -->
<button type="button" id="btn_example2">버튼 예제2</button>
 
</form>
<!--출처 : http://blog.freezner.com/archives/807 -->
cs


버튼에 type="button" 을 주면 action을 타지않게된다 



-방법2


1
2
3
4
5
6
7
8
9
10
11
12
$('#form_submit').click(function(){
   $.ajax({
        type: 'post',
        url: 'process.php',
        success: function(data){
            alert(data);
        }
   });
    return false//<- 이 문장으로 새로고침(reload)이 방지됨
});
 
//출처: http://somoly.tistory.com/103 [somoly.tistory.com]
cs

버튼이벤트에서 새로고침을 막는 방법도있다
방법은 여러가지지만 사용시에는 한가지로 통일시켜야 가독성이 좋고 어떤방식인지 헷갈리지않으니
주의하도록 한다


반응형

'IT > Javascript|Jquery' 카테고리의 다른 글

[JavaScript] ES6 문법 정리  (0) 2018.01.08
javascript 셀렉트박스(SelectBox) 바로실행  (2) 2018.01.04
promise 패턴 예제  (0) 2018.01.02
ajax 배열전송  (0) 2018.01.02
모바일/PC 코딩하기  (0) 2018.01.02

+ Recent posts