Download objek JSON sebagai file dari browser
Saya punya kode berikut untuk membiarkan pengguna men-download data string dalam file csv.
exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Ia bekerja dengan baik bahwa jika klien menjalankan kode ini menghasilkan halaman kosong dan mulai men-download data dalam file csv.
Jadi saya mencoba untuk melakukan hal 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 aku hanya melihat sebuah halaman dengan JSON data yang ditampilkan pada itu, tidak men-download.
Aku pergi melalui beberapa penelitian dan ini klaim untuk bekerja tapi aku don't melihat perbedaan apapun untuk kode saya.
Aku kehilangan sesuatu dalam kode saya?
Terima kasih untuk membaca pertanyaan saya:)
123
10
Ini adalah bagaimana saya soal itu bagi saya aplikasi:
HTML:
<id="downloadAnchorElem" style="display:none;"></a>
JS (JS murni, tidak jQuery di sini):
Dalam hal ini,
storageObj
adalah js objek yang anda ingin menyimpan, dan "adegan.json" ini hanya sebuah contoh nama untuk file yang dihasilkan.Pendekatan ini memiliki beberapa keuntungan atas lainnya diusulkan:
Saya membutuhkan perilaku ini tanpa eksplisit mengklik karena saya ingin memicu men-download secara otomatis di beberapa titik dari js.
JS solusi (HTML tidak diperlukan):
Menemukan sebuah jawaban.
tampaknya bekerja dengan baik bagi saya.
Semua kredit pergi ke @koboi-ben-alman, yang merupakan penulis dari kode di atas
Ini akan menjadi murni JS versi (diadaptasi dari cowboy's):
[http://jsfiddle.net/sz76c083/1][1]
Anda bisa mencoba menggunakan:
saveAs()
metodeTidak perlu berurusan dengan setiap elemen HTML sama sekali.
Jika anda ingin cantik mencetak JSON, per jawaban, anda bisa menggunakan:
Berikut ini bekerja untuk saya:
dan kemudian menyebutnya seperti begitu
Saya baru-baru ini untuk membuat sebuah tombol yang akan men-download sebuah file json dari semua nilai-nilai dalam bentuk yang besar. Aku membutuhkan ini untuk bekerja dengan IE/Edge/Chrome. Ini adalah apa yang saya lakukan:
Ada satu masalah dengan nama file dan ekstensi pada tepi tetapi pada saat menulis ini tampaknya menjadi sebuah bug dengan Tepi yang disebabkan diperbaiki.
Semoga ini bisa membantu seseorang
Sederhana, bersih solusi bagi mereka yang hanya menargetkan browser modern:
Download
milik dari link adalah baru dan tidak didukung di Internet Explorer (lihat tabel kompatibilitas di sini). Untuk cross-browser solusi untuk masalah ini aku akan melihat FileSaver.jsBereaksi: tambahkan ini di mana anda inginkan dalam membuat metode.
• Objek dalam negeri:
• Objek dalam alat peraga:
className dan gaya adalah opsional, mengubah gaya sesuai dengan kebutuhan anda.
Cobalah untuk mengatur MIME-type:
exportData = 'data:application/octet-stream;charset=utf-8,';
Tapi ada dapat masalah dengan nama file dalam dialog simpan.