ブラウザからJSONオブジェクトをファイルとしてダウンロードする。
csvファイルの文字列をダウンロードさせるために、以下のコードを用意しました。
exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
クライアントがこのコードを実行すると、空白のページが生成され、csvファイルのデータのダウンロードが開始されるのは問題ありません。
そこで、次のようなJSONオブジェクトを使用してこれを実行しようとしました。
exportData = 'data:text/json;charset=utf-8,';
exportData += escape(JSON.stringify(jsonObject));
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
しかし、JSONデータが表示されたページが表示されるだけで、ダウンロードはされません。
いくつか調べてみたところ、こちらが動作すると主張していますが、私のコードに違いは見当たりません。
私のコードに何か欠けているのでしょうか?
私の質問を読んでくれてありがとうございます:)
123
10
これが私のアプリケーションのためにそれを解決した方法です:
HTML:
< a id = "downloadAnchorElem" style = "display:none">< / a>
。JS(ここではjQueryではなく、純粋なJS):
この場合、「storageObj」は保存するjsオブジェクトであり、「scene.json」は結果のファイルの単なる例名です。
このアプローチには、他の提案されたアプローチよりも次の利点があります。
jsからある時点で自動的にダウンロードをトリガーしたいので、明示的にクリックせずにこの動作が必要でした。
JSソリューション(HTMLは不要):
答えが見つかりました。
は、私の場合、問題なく動作するようです。
All credit goes to @cowboy-ben-alman, who is the author of the code above .
これは純粋なJSバージョン(カウボーイから改作)になります。
[http://jsfiddle.net/sz76c083/1][1]。
あなたは使ってみることができます:
-ネイティブJavaScript APIのBlobコンストラクターと。 -FileSaver.js
saveAs()
メソッド。HTML要素をまったく処理する必要はありません。
JSONをきれいに印刷したい場合は、この回答に従って、次のコマンドを使用できます。
以下は私にとってはうまくいきました。
そして、そのように呼び出します。
最近、大きなフォームのすべての値のjsonファイルをダウンロードするボタンを作成する必要がありました。 IE / Edge / Chromeで作業するには、これが必要でした。 これは私がやったことです。
ファイル名とエッジの拡張子に1つの問題がありましたが、執筆時点では、これは修正される予定のEdgeのバグであるように思われました。
これが誰かを助けることを願っています。
最新のブラウザーのみを対象とする人のためのシンプルでクリーンなソリューション:
リンクの
download
プロパティは新しいもので、Internet Explorerではサポートされていません(互換性テーブルここを参照してください)。 この問題に対するクロスブラウザのソリューションとしては、FileSaver.jsを参照してください。反応:レンダリングメソッドで必要な場所にこれを追加します。
•オブジェクト状態:
•オブジェクト小道具:
classNameとstyleはオプションで、必要に応じてスタイルを変更します。
別のMIME-typeを設定してみてください:
exportData = 'data:application/octet-stream;charset=utf-8,';
.しかし、保存ダイアログのファイル名に問題がある場合があります。