본문 바로가기
개발

XE에서 Ajax 통신중 페이지를 나가면 팝업창 뜨는 문제 해결법!

by 비손 2013. 11. 8.

XE 애드온이나 모듈 등 프로그램을 제작하다보면 Ajax 통신을 종종 이용하게 되는데요.

기본적으로 XE 구조상 중요한 데이터를 Ajax 를 이용해 통신하도록 되어 있기 때문인지 통신 도중에 페이지를 나가거나 새로고침을 하면 아래와 같은 팝업창이 뜨면서 중단이 됩니다.

(Chrome에서는 이렇게 보입니다. IE, Firefox는 메세지에 약간 차이가 있습니다)


Ajax 통신 중간에 중단되어도 상관 없는 데이터들을 보낼 때도 이 메세지가 뜨면 매우 성가신데요. 특히 setInterval을 이용해서 주기적으로 데이터를 가져오는 기능을 사용하고 있다면, 어떤 때는 뜨고, 어떤 때는 안뜨는 매우 희안한 상황이 연출 됩니다.


의외로 이 메세지를 없애는 방법은 간단합니다.


이 기능은 jQuery의 ajaxStart() 를 이용하는데, 이 함수는 Ajax 통신이 시작되면 작동하는 함수입니다. 위 메세지도 ajaxStart() 함수가 작동될 때 바인딩 시켜주고, ajaxStop()함수가 작동될 때 언바인딩 시켜주면서 작동했다가 안했다가 하는 것입니다.


내가 보내는 Ajax 통신을 시작할 때 ajaxStart()함수를 실행시키지 않고 독립적으로 실행하려면 'global' 옵션에 'false'값을 주면 됩니다.


jQuery.ajax({

     url:주소,

     success: function(data) {

          데이타 처리

     },

     global: false

});


이렇게 처리하면 XE의 새로고침 팝업의 굴레에서 벗어날 수 있습니다.