2012-12-26 56 views
0

我有一個名爲download.php的文件,並在其中調用getpdf函數。Ajax和輸出pdf文件不能一起工作

當用戶點擊下載按鈕時,我通過ajax調用download.php下載pdf文件。但沒有發生,並且沒有下載窗口出現。我檢查了它在螢火蟲淨選項卡和download.php點擊事件請求。它的大小也發生變化,顯示文件正在從其位置讀取,但沒有下載窗口。

這裏的getpdf代碼:

function getpdf($id) { 
    header('Content-Type: application/pdf'); 
    readfile('/san/theo-books/PDFs/'.$id.'.pdf'); 
    exit; 
} 

而這裏的download.php代碼:

$pdf_id = $_POST('pdi'); 
echo getpdf($pdf_id); 

問題是什麼?你能幫我嗎?

+0

這是預期的行爲。您的文件將在Ajax庫的內部方法中可用。彈出式下載窗口需要完整的回發。 – VahidN

+0

什麼是完整回傳? –

回答

0

以下是完整的回發版本。它不使用jQuery Ajax,因爲Popup下載窗口需要完整的回傳:

<a id="pdf-10" href="#">PDF Export</a> 

$(document).ready(function() { 
    $('a[id^="pdf"]').click(function (event) { 
     event.preventDefault(); 
     var pdfExportPath = "/san/theo-books/PDFs/"; 
     var $a = $(this); 
     var postId = $a.attr('id').replace("pdf-",""); 
     var form = $('<form action="' + pdfExportPath + '" name="pdf' + postId + '" id="pdf' + postId + '" method="POST"> <input id="id" name="id" type="hidden" value="' + postId + '" /></form>'); 
     $(form).appendTo('body'); 
     form.submit(); 
    }); 
});