IT/Web
[jQuery] 동기방식의 파일다운
Andante con moto
2021. 1. 23. 13:20
728x90
반응형
ASP로 제작된 사이트를 유지보수중입니다.
버튼 클릭시 데이타를 엑셀파일로 다운로드하는 기능을 추가했습니다.
일반적으론,,
조회된 데이타의 헤더에 "application/vnd.ms-excel" 를 붙이면 html body가 엑셀형식으로 다운이 됩니다.
여기까진 됐으나, 문제는 데이타를 조회하여 엑셀다운이 준비된 그 순간을 캐치를 못했다는 거죠.
때문에 사용자는 버튼 클릭시 아무런 액션이 없다가 내부적으로 엑셀다운이 준비가 되면 브라우저 하단에
다운로드 창이 나타나게 됩니다.
만약 서버와 통신이 지연된다면 사용자는 진행상황을 알 수 없어 계속 버튼을 클릭하는 경우도 생깁니다.
그럼 이런 방식은 어떨까요?
콜백함수를 이용하여 버튼 클릭시 비활성화하고, 엑셀다운준비가 완료되면 다시 활성화 하는 방법입니다.
자바스크립트로 단순하게 콜백함수를 구현할 순 있지만,
location.href로 asp파일을 호출하는 형태라면 데이타 조회가 끝나는 시점을 캐치하지 못하여
jquery.filedownloads.js 라는 구문을 이용하여 구현하였습니다.
https://github.com/johnculviner/jquery.fileDownload/blob/master/src/Scripts/jquery.fileDownload.js
아래 구문을 참고하세요
더 좋은 방법이 있다면 댓글 부탁드립니다^^
//asp파일 호출
$.fileDownload("exceldown.asp", {
prepareCallback: function (url) {
$("#btn_exceldown").prop('disabled', true);
alert("prepare");
},
successCallback: function (url) {
$("#btn_exceldown").prop('disabled', false);
alert("success!");
},
failCallback: function (html, url) {
$("#btn_exceldown").prop('disabled', false);
alert("Failed-" + html);
}
});
728x90
반응형