2017-06-17 55 views
0

我寫了一個簡單的腳本php,使用TCPDF類來生成文件pdf。 之後,在jquery中,它返回base64中的文件,並在模態中查看。來自TCPDF腳本的AJAX返回參數

這是AJAX代碼..

$.ajax({ 
    url: path, 
    type: 'post', 
    data: { myjson: myjson }, 
    mimeType: 'text/plain; charset=x-user-defined', 
    success : function(data) { 
     // printPreviewBase64() is a function decodes 'data' and preview pdf in a modal 
     printPreviewBase64(data); 
    } 
}); 

這是PHP文件..

<php 
// code to generate pdf 
$pdf->Output($file_name, 'I'); 

我怎麼能在成功也返回其它參數? 例如,我想返回:pdf路徑,日期,作者等。

Thanx!

回答

0

你必須在數組中包含pdf日期,路徑,作者,然後json_encode數組,打印並退出。

在與 data.path,data.date jQuery的訪問他們的成功方法

然後,data.author

希望這能解決你的問題

+0

我只是嘗試一下,但問題是「mimeType:'text/plain; charset = x-user-defined'」。所以,ajax不會返回json數據。 – perseoclub

+0

你可以發佈應該返回json的服務器端代碼嗎? –

+0

Thx Alani,問題在於如果使用由服務器端腳本中的json_encode()中的$ pdf-> Output($ file_name,'I');'生成的代碼,ajax會返回「parsererror」(200)。 我已經解決了,使用'$ pdf_code = base64_encode($ pdf->輸出($ file_name,'S'));'。通過這種方式,我可以返回變量爲base64!在我用js解碼之後,它就沒事了! ;) – perseoclub

0

我已經解決了!

第一。改變與Ajax請求 「數據類型: 'JSON'」:

$.ajax({ 
    url: path, 
    type: 'post', 
    data: { myjson: myjson }, 
    dataType: 'JSON', 
    success: function(data) { 
     // data.pdf_code → verrà poi codificato in base64.. 

     console.log(data.pdf_path); 

     //console.log(data.pdf_code); 
     printPreviewBase64(data.pdf_code); 

    }, 
    error: function (xhr, ajaxOptions, thrownError) { 
     console.log(xhr.status); 
     console.log(thrownError); 
    } 
}); 

在PHP代碼中,我不得不改變在TCPDF輸出..:

$pdf_code = base64_encode($pdf->Output($file_name, 'S')); 

..和然後我返回的所有數據一個數組JSON。