首頁 >web前端 >js教程 >如何在 PHP 中透過 AJAX 強制下載 CSV 檔案?

如何在 PHP 中透過 AJAX 強制下載 CSV 檔案?

Susan Sarandon
Susan Sarandon原創
2024-10-24 08:37:01313瀏覽

How to Force-Download a CSV File Through AJAX in PHP?

使用 PHP 和 AJAX 下載檔案

問題:

如何透過 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 無法直接下載檔案。要強制下載文件,您可以使用以下方法之一:

  • 彈出新窗口:建立一個新窗口,並將下載連結作為其地址。
  • document.location = ...: 使用 document.location = ... 屬性將文件的目前位置設定為下載連結。

範例:

您可以如下修改 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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn