2016-08-23 2 views
1

У меня есть несколько больших конфигураций json и вы хотите, чтобы пользователи могли их экспортировать. Проблема заключается в том, что JS prompt не может вернуть полные данные, поэтому я решил использовать windows.open и писать. Но «пишите» просто «ешьте» html в значениях json. Этот ответ https://stackoverflow.com/a/22055706 помог многим.document.write и вывод JSON

var data = Store.export(); 
var url = 'data:text/json;charset=utf8,' + encodeURIComponent(data); 
window.open(url, '_blank'); 
window.focus(); 

Но когда я пытаюсь экспортировать очень большие и длинные JSON все замерзает ... Как я могу изменить его, чтобы использовать пустой URL и неизмененный JSON как текст?

UPD Мой обходной

var myWindow = window.open("", "JSON Settings", '_blank'); 
myWindow.document.write('<textarea>' + escapeHTML(Store.export()) + '</textarea>'); 
myWindow.focus(); 
+0

могли бы вы сделать скрипку для нас, чтобы испытать вокруг с? – TrojanMorse

+0

Вы попробовали что-то вроде http://stackoverflow.com/questions/3665115/create-a-file-in-memory-for-user-to-download-not-through-server (второй ответ)? – yuriy636

ответ

1

Можно включить текстовое поле из нескольких строк, в которых вы бы разместить данные.

Это дает ему пробел, а не просто вводится в HTML.

Пользователь затем копирует и вставляет данные в свой собственный файл .json.

+0

Я делал это, но большое количество данных заставило мой браузер несколько раз висеть, поэтому я перешел на отправку данных в качестве загрузки и имел лучшие результаты. –

+0

Да. он выглядит отлично, и сделал то, что я хочу с html, но такие данные - " news " превратился в «новости» и сломал json ... – user1128677

0

Если вы пытаетесь экспортировать данные, есть ли у вас какие-либо требования, запрещающие пользователю загружать данные?

Это Lib пригодился для меня несколько раз:

https://github.com/eligrey/FileSaver.js

+0

Я думал об этом, но не хочу использовать внешнюю библиотеку: c – user1128677