Rumah >pembangunan bahagian belakang >tutorial php >Mengapa AJAX Tidak Mencetuskan Muat Turun Fail, dan Apakah Alternatifnya?

Mengapa AJAX Tidak Mencetuskan Muat Turun Fail, dan Apakah Alternatifnya?

DDD
DDDasal
2024-12-23 17:15:15645semak imbas

Why Doesn't AJAX Trigger File Downloads, and What Are the Alternatives?

Memuat Turun Fail melalui AJAX

Apabila cuba untuk memulakan permintaan muat turun AJAX melalui klik butang, anda mungkin menghadapi masalah di mana penyelesaiannya anda sedang menggaji nampaknya tidak berkesan.

Pendekatan anda melibatkan mencipta objek XMLHttpRequest dan menghantar permintaan GET kepada skrip PHP (download.php) yang menetapkan pengepala khusus dan membaca data daripada fail. Walau bagaimanapun, kaedah ini tidak mencetuskan gesaan muat turun yang dijangkakan.

Penyelesaian

Inti isu terletak pada hakikat bahawa AJAX sahaja tidak boleh memulakan muat turun fail secara langsung. Untuk mencapai matlamat ini, anda boleh memanfaatkan salah satu daripada dua kaedah:

Menggunakan window.location

Kaedah ini mudah dan tidak memerlukan permintaan AJAX. Hanya berikan URL muat turun ke window.location.

window.location = "download.php";

Ini akan menavigasi ke skrip muat turun dan menggesa pengguna memuat turun fail tanpa menukar halaman semasa.

Menggunakan atribut muat turun (HTML5)

Jika sokongan penyemak imbas membimbangkan, pertimbangkan untuk menggunakan atribut muat turun (disokong oleh Firefox dan Chrome).

<a href="download.php" download>Download File</a>

Atribut muat turun menggesa pengguna memuat turun fail tanpa meninggalkan halaman semasa.

Atas ialah kandungan terperinci Mengapa AJAX Tidak Mencetuskan Muat Turun Fail, dan Apakah Alternatifnya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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