2011-08-03 3 views
0
일부 페이지에서

wkhtmloptf를 사용하여 PDF를 만드는 페이지 (createPDF.php)를 호출하는 링크를 제공하며 다운로드 상자가 표시되는 데 최대 30 초가 소요될 수 있습니다.파일 (URL) 생성 및로드 중 jQuery 대화

페이지를로드하는 동안 메시지를 표시하고 다운로드 상자가 나타나면 사라질 대화 상자 (jQuery UI 사용)를 보여 드리고 싶습니다. 지금

: PDF 아이콘에

  1. 사용자 클릭, 그것은 사용자가 페이지 방향 및 페이지 형식을 선택하는 jQuery를 UI 대화 상자를 엽니 다. 할 "PDF 생성"에
  2. 사용자가 클릭 :

    (this).dialog("close"); // Close current dialog (Select page orientation, ...) 
    $("#dialog-modal").dialog("open"); // Open new dialog (Please wait while ....) 
    window.location.href = "<?php echo URL; ?>createPDF.php"; (generate and load the PDF) 
    // dialog should close here once the above URL is loaded 
    

나타납니다 "기다려주십시오"하지만 다운로드 상자가 팝업 때 사라지지 보여주는 대화 상자를 표시합니다.

아이디어가 있으십니까? 미리 감사드립니다!

편집 :

내가 다음 코드를 사용하여, 아약스로 파일을로드하려고 :

$.ajax({ 
    url: "<?php echo URL; ?>createPDF.php", 
    async: false, 
    beforeSend: function(xhr) { 
     xhr.overrideMimeType('application/octet-stream'); 
    }, 
    success: function(content) { 
     $("#dialog-modal").dialog("close"); 
    } 
}); 

PDF 파일 한 번에 가까운 대화 상자가 생성,하지만 난 더 다운로드 상자를 얻을 수 없습니다 .. .

편집 3 :

마지막으로 나는 timeo와 blockUI를 사용 ut을 닫으십시오. 원하는 경우 메시지 상자를 닫을 수도 있습니다.

$(this).dialog("close"); 
$.blockUI({ message: '<div style="padding: 20px;"><div style="font-size: 20px;">Veuillez patienter pendant que votre PDF est généré.</div> <br /> Ceci peut prendre quelques secondes. <br /> <br /> Ce message peut disparaître avant que le téléchargement ne commence.</div>' });  
$('.blockOverlay').attr('title','Cliquez pour fermer ce message').click($.unblockUI); 
var pdfFormat = $('#pdfFormat').val(); 
var pdfOrientation = $('#pdfOrientation').val(); 
pdfURL = pdfURL + "&f=" + pdfFormat + "&o=" + pdfOrientation; 
window.location.href = pdfURL; 
setTimeout(
    function(){ 
     $.unblockUI(); 
    }, 5000); 

답변

0

마지막으로 blockUI를 사용하여 시간 제한을 설정하여 닫습니다. 원하는 경우 메시지 상자를 닫을 수도 있습니다.

$(this).dialog("close"); 
$.blockUI({ message: '<div style="padding: 20px;"><div style="font-size: 20px;">Veuillez patienter pendant que votre PDF est généré.</div> <br /> Ceci peut prendre quelques secondes. <br /> <br /> Ce message peut disparaître avant que le téléchargement ne commence.</div>' });  
$('.blockOverlay').attr('title','Cliquez pour fermer ce message').click($.unblockUI); 
var pdfFormat = $('#pdfFormat').val(); 
var pdfOrientation = $('#pdfOrientation').val(); 
pdfURL = pdfURL + "&f=" + pdfFormat + "&o=" + pdfOrientation; 
window.location.href = pdfURL; 
setTimeout(
    function(){ 
     $.unblockUI(); 
    }, 5000); 
0

this post의 방법을 사용해보십시오. 그러나 이미지를 사용하고 표시하는 대신 $.ajaxStart()$.ajaxStop() 함수를 만들고 대화 상자를 파괴하거나 초기에 open/close 대화 상자를 초기화하십시오.