Memuat Turun Fail dengan Permintaan AJAX: Panduan Komprehensif
Masalah: Percubaan untuk memulakan "permintaan muat turun ajax" apabila klik butang tidak menghasilkan hasil yang diingini. Demonstrasi dalam JavaScript dan PHP disediakan di bawah:
JavaScript:
var xhr = new XMLHttpRequest(); xhr.open("GET", "download.php"); xhr.send();
PHP (muat turun.php):
<? header("Cache-Control: public"); header("Content-Description: File Transfer"); header("Content-Disposition: attachment; filename= file.txt"); header("Content-Transfer-Encoding: binary"); readfile("file.txt"); ?>
Kod di atas tidak berfungsi seperti yang dijangkakan. Bolehkah anda memberikan cerapan tentang langkah yang diperlukan untuk menyelesaikan isu ini?
Penyelesaian:
Memulakan muat turun fail melalui permintaan AJAX tidak boleh dilaksanakan. Untuk tugasan ini, akses terus kepada fail diperlukan.
Penyelesaian Kemas Kini (27 April 2015):
Gunakan Atribut 'muat turun':
JavaScript:
// Check if 'download' is supported if ('download' in HTMLAnchorElement.prototype) { // Create an anchor element var anchor = document.createElement('a'); // Set 'download' attribute and file URL anchor.download = 'file.txt'; anchor.href = 'download.php'; // Trigger file download anchor.click(); } else { // Fallback to previous method window.location = 'download.php'; }
Penyelesaian Asal:
Gunakan 'window.location':
JavaScript :
$.ajax({ url: 'download.php', type: 'POST', success: function() { window.location = 'download.php'; } });
Untuk kesederhanaan, adalah disyorkan untuk mengelakkan permintaan AJAX semuanya dan hanya gunakan 'window.location'.
Atas ialah kandungan terperinci Mengapa AJAX Tidak Berfungsi untuk Muat Turun Fail, dan Apakah Alternatif Terbaik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!