Mam następujący kod, aby umożliwić użytkownikom pobieranie ciągów danych w pliku csv.
exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Działa dobrze, jeśli klient uruchamia kod, generuje pustą stronę i rozpoczyna pobieranie danych w pliku csv.
Więc próbowałem to zrobić z obiektem JSON, takim jak
exportData = 'data:text/json;charset=utf-8,';
exportData += escape(JSON.stringify(jsonObject));
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Ale widzę tylko stronę z wyświetlonymi danymi JSON, nie pobieram jej.
Przeszedłem przez kilka badań i ten twierdzi, że działa, ale nie widzę żadnej różnicy w moim kodzie.
Czy coś mi brakuje w kodzie?
Dziękuję za przeczytanie mojego pytania :)
źródło
var storageObj = []; for (var i=0; i<1000000; ++i) storageObj.push('aaa');
w przeglądarce Chrome 61JSON.stringify(exportObj, null, 2)
tego użyj @YASHDAVEZnalazłem odpowiedź.
wydaje mi się, że działa dobrze dla mnie.
** Wszystkie zasługi dla @ cowboy-ben-alman, który jest autorem powyższego kodu **
źródło
To byłaby czysta wersja JS (zaadaptowana z kowbojskiego):
http://jsfiddle.net/sz76c083/1
źródło
Możesz spróbować użyć:
saveAs()
SposóbNie musisz w ogóle zajmować się żadnymi elementami HTML.
Jeśli chcesz ładnie wydrukować JSON, zgodnie z tą odpowiedzią , możesz użyć:
źródło
Pracowały dla mnie:
a potem tak to nazwać
źródło
initMouseEvent()
jest to przestarzały standard sieciowy i nie powinien być już używany. Zamiast tego użyjnew MouseEvent()
interfejsu. To tylko drobny refaktor.Niedawno musiałem utworzyć przycisk, który pobierałby plik json ze wszystkimi wartościami dużego formularza. Potrzebowałem tego do pracy z IE / Edge / Chrome. Oto co zrobiłem:
Wystąpił jeden problem z nazwą pliku i rozszerzeniem w Edge, ale w momencie pisania wydawało się, że jest to błąd w Edge, który ma zostać naprawiony.
Mam nadzieję, że to komuś pomoże
źródło
document.body.appendChild(a); a.style.display = 'none';
aby działała w przeglądarce Firefox.Proste, czyste rozwiązanie dla tych, którzy kierują reklamy tylko na nowoczesne przeglądarki:
źródło
download
Nieruchomość linków jest nowy i nie jest obsługiwany w przeglądarce Internet Explorer (patrz tabela kompatybilności tutaj ). Aby znaleźć rozwiązanie tego problemu w różnych przeglądarkach, przyjrzyj się plikowi FileSaver.jsźródło
Reaguj : dodaj to w dowolnym miejscu w metodzie renderowania.
• Obiekt w stanie :
• Obiekt w rekwizytach :
className i style są opcjonalne, zmodyfikuj styl zgodnie ze swoimi potrzebami.
źródło
Spróbuj ustawić inny typ MIME:
exportData = 'data:application/octet-stream;charset=utf-8,';
Ale mogą wystąpić problemy z nazwą pliku w oknie dialogowym zapisywania.
źródło
data = "data:application/octet-stream;charset=utf-8," + encodeURIComponent(JSON.stringify(data)); window.open(data);
po prostu pobiera plik jako „pobierz”, ale dane, które zostały zdefiniowane, a następnie zakodowane w formacie URI są takie, jakie powinny być.Jeśli wolisz fragment konsoli, raser niż nazwę pliku, możesz to zrobić:
źródło