Memuat Turun Fail melalui POST dengan Data JSON dalam JavaScript/jQuery
Senario:
Anda mempunyai aplikasi web satu halaman yang berkomunikasi dengan perkhidmatan web RESTful melalui panggilan AJAX. Anda perlu:
- Menyerahkan permintaan POST dengan data JSON ke URL REST.
- Kembalikan JSON jika permintaan itu menentukan respons JSON.
- Kembalikan yang boleh dimuat turun fail binari jika permintaan menentukan respons binari (cth., PDF, XLS).
Isu:
Cara mengendalikan fail yang boleh dimuat turun dalam kod JavaScript klien apabila menggunakan panggilan AJAX?
Penyelesaian:
Walaupun kod yang disediakan berjaya mengendalikan respons JSON, tidak mungkin untuk memuat turun fail menggunakan permintaan AJAX secara langsung disebabkan oleh pengehadan dalam jenis data pilihan. Walau bagaimanapun, pendekatan alternatif boleh diambil:
Kaedah 1: Menjana dan Menyimpan Fail pada Pelayan
- Buat permintaan AJAX untuk menjana fail binari dan mengembalikan Respons JSON dengan URL pada fail.
- Dalam pengendali kejayaan AJAX, ubah hala penyemak imbas ke URL menggunakan window.location.href untuk memuat turun fail.
Kelebihan:
- Pengurusan fail terpusat pada pelayan.
Keburukan:
- Memerlukan berbilang AJAX panggilan.
- Overhed pengurusan fail tambahan pada pelayan.
Kaedah 2: Mencipta Iframe
- Lakukan permintaan POST kepada /create_binary_file.php dengan data JSON.
- Buat iframe dan tetapkan atribut srcnya kepada respons daripada permintaan POST, yang dijangka mengandungi URL fail yang boleh dimuat turun.
- Tambahkan iframe pada halaman menggunakan document.body.appendChild() atau $.body.append() jQuery.
Kebaikan:
- Menggalakkan interaksi pengguna untuk memuat turun fail.
- Tiada pengurusan fail tambahan pada pelayan.
Keburukan:
- Memerlukan pengubahsuaian DOM.
Pertimbangan:
- Kaedah 1 memerlukan lebih banyak overhed pelayan tetapi membenarkan lebih banyak kawalan dan pengurusan fail.
- Kaedah 2 boleh menjadi lebih mudah tetapi melibatkan pengubahsuaian DOM dan mungkin tidak sesuai untuk halaman yang kompleks.
- Pelayan mesti mempunyai konfigurasi jenis MIME yang sesuai untuk memudahkan muat turun fail binari.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Fail Boleh Muat Turun dalam JavaScript/jQuery Menggunakan Permintaan AJAX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!