Saya memiliki kode berikut untuk memungkinkan pengguna mengunduh string data dalam file csv.
exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Ini berfungsi dengan baik bahwa jika klien menjalankan kode itu menghasilkan halaman kosong dan mulai mengunduh data dalam file csv.
Jadi saya mencoba melakukan ini dengan objek JSON seperti
exportData = 'data:text/json;charset=utf-8,';
exportData += escape(JSON.stringify(jsonObject));
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Tapi saya hanya melihat halaman dengan data JSON yang ditampilkan di sana, bukan mengunduhnya.
Saya telah melalui beberapa penelitian dan yang satu ini mengklaim berfungsi tetapi saya tidak melihat perbedaan pada kode saya.
Apakah saya kehilangan sesuatu dalam kode saya?
Terima kasih sudah membaca pertanyaan saya :)
sumber
var storageObj = []; for (var i=0; i<1000000; ++i) storageObj.push('aaa');
beri "unduh Gagal - Kesalahan jaringan" di Chrome 61JSON.stringify(exportObj, null, 2)
sebagai gantinyaMenemukan jawaban.
sepertinya bekerja dengan baik untuk saya.
** Semua kredit diberikan kepada @ cowboy-ben-alman, yang merupakan pembuat kode di atas **
sumber
Ini akan menjadi versi JS murni (diadaptasi dari koboi):
http://jsfiddle.net/sz76c083/1
sumber
Anda dapat mencoba menggunakan:
saveAs()
metodeTidak perlu berurusan dengan elemen HTML sama sekali.
Jika Anda ingin cukup mencetak JSON, per jawaban ini , Anda dapat menggunakan:
sumber
Berikut ini bekerja untuk saya:
dan kemudian menyebutnya seperti itu
sumber
initMouseEvent()
adalah Standar Web yang sudah usang dan tidak boleh digunakan lagi. Sebagai gantinya, gunakannew MouseEvent()
antarmuka. Itu hanya refactor kecil.Baru-baru ini saya harus membuat tombol yang akan mengunduh file json dari semua nilai bentuk besar. Saya membutuhkan ini untuk bekerja dengan IE / Edge / Chrome. Inilah yang saya lakukan:
Ada satu masalah dengan nama file dan ekstensi di tepi tetapi pada saat penulisan ini tampaknya menjadi bug dengan Ujung yang akan diperbaiki.
Semoga ini bisa membantu seseorang
sumber
document.body.appendChild(a); a.style.display = 'none';
untuk membuatnya bekerja di Firefox.Solusi sederhana dan bersih bagi mereka yang hanya menargetkan browser modern:
sumber
The
download
properti link baru dan tidak didukung di Internet Explorer (lihat tabel kompatibilitas di sini ). Untuk solusi lintas-browser untuk masalah ini saya akan melihat FileSaver.jssumber
Bereaksi : tambahkan ini di tempat yang Anda inginkan dalam metode render Anda.
• Objek dalam keadaan :
• Objek dalam alat peraga :
className dan gaya adalah opsional, modifikasi gaya sesuai dengan kebutuhan Anda.
sumber
Cobalah untuk mengatur tipe MIME lain:
exportData = 'data:application/octet-stream;charset=utf-8,';
Tetapi mungkin ada masalah dengan nama file dalam dialog simpan.
sumber
data = "data:application/octet-stream;charset=utf-8," + encodeURIComponent(JSON.stringify(data)); window.open(data);
itu hanya mengunduh file sebagai "unduh" tetapi data yang saya ikat dan kemudian uri-disandikan sebagaimana mestinya.Jika Anda lebih suka potongan konsol, raser, daripada nama file, Anda dapat melakukan ini:
sumber