Rumah >hujung hadapan web >tutorial js >Bagaimana Memaksa-Muat Turun Fail CSV Melalui AJAX dalam PHP?
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>
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:
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>
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!