問題:
如何透過 AJAX 強制下載 CSV 檔案在 PHP 中呼叫?
背景:
您已經建立了一個 AJAX 函數,該函數會根據使用者輸入產生 CSV 檔案。建立後,您希望自動下載該檔案而不提示使用者。
PHP 程式碼:
在您的PHP 檔案(csv.php) 中,您嘗試了使用以下腳本強制下載CSV 檔案:
<code class="php">$fileName = 'file.csv'; $downloadFileName = 'newfile.csv'; if (file_exists($fileName)) { header('Content-Description: File Transfer'); header('Content-Type: text/csv'); header('Content-Disposition: attachment; filename='.$downloadFileName); ob_clean(); flush(); readfile($fileName); exit; } echo "done";</code>
問題:
當您在csv.php 末尾運行此腳本時,以下內容
解決方案:
AJAX 無法直接下載檔案。要強制下載文件,您可以使用以下方法之一:
範例:
您可以如下修改 AJAX 函數,以彈出一個包含下載連結的新視窗:
<code class="javascript">function csv() { ajaxRequest = ajax(); postdata = "data=" + document.getElementById("id").value; ajaxRequest.onreadystatechange = function () { var ajaxDisplay = document.getElementById('ajaxDiv'); if (ajaxRequest.readyState == 4 && ajaxRequest.status == 200) { window.open(ajaxRequest.responseText); // Pop up a new window with the download link } } ajaxRequest.open("POST", "csv.php", false); ajaxRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); ajaxRequest.send(postdata); }</code>
以上是如何在 PHP 中透過 AJAX 強制下載 CSV 檔案?的詳細內容。更多資訊請關注PHP中文網其他相關文章!