首頁 > web前端 > js教程 > 主體

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

Susan Sarandon
發布: 2024-10-24 08:37:01
原創
223 人瀏覽過

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中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!