Rumah > hujung hadapan web > tutorial js > Bagaimana Memaksa-Muat Turun Fail CSV Melalui AJAX dalam PHP?

Bagaimana Memaksa-Muat Turun Fail CSV Melalui AJAX dalam PHP?

Susan Sarandon
Lepaskan: 2024-10-24 08:37:01
asal
365 orang telah melayarinya

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

Memuat turun Fail dengan PHP dan AJAX

Soalan:

Bagaimana saya boleh memuat turun paksa fail CSV melalui AJAX panggil dalam PHP?

Latar Belakang:

Anda telah mencipta fungsi AJAX yang menjana fail CSV berdasarkan input pengguna. Selepas penciptaan, anda ingin memuat turun fail secara automatik tanpa menggesa pengguna.

Kod PHP:

Dalam fail PHP anda (csv.php), anda telah cuba untuk gunakan skrip berikut untuk memuat turun paksa fail 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>
Salin selepas log masuk

Isu:

Apabila anda menjalankan skrip ini pada penghujung csv.php, kandungan fail dipaparkan pada halaman dan bukannya dimuat turun.

Penyelesaian:

AJAX tidak boleh digunakan untuk memuat turun terus fail. Untuk memuat turun fail secara paksa, anda boleh menggunakan salah satu kaedah berikut:

  • Timbul tetingkap baharu: Cipta tetingkap baharu dengan pautan muat turun sebagai alamatnya.
  • document.location = ...: Gunakan document.location = ... harta untuk menetapkan lokasi semasa dokumen kepada pautan muat turun.

Contoh:

Anda boleh mengubah suai fungsi AJAX anda seperti berikut untuk muncul tetingkap baharu dengan pautan muat turun:

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana Memaksa-Muat Turun Fail CSV Melalui AJAX dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan