Tengo el siguiente código para permitir a los usuarios descargar cadenas de datos en un archivo csv.
exportData = 'data:text/csv;charset=utf-8,';
exportData += 'some csv strings';
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Funciona bien que si el cliente ejecuta el código que genera la página en blanco y comienza a descargar los datos en el archivo csv.
Así que traté de hacer esto con objeto JSON como
exportData = 'data:text/json;charset=utf-8,';
exportData += escape(JSON.stringify(jsonObject));
encodedUri = encodeURI(exportData);
newWindow = window.open(encodedUri);
Pero sólo veo una página con los datos JSON mostrados en ella, no descargarlo.
Fui a través de algunas investigaciones y este afirma que funciona, pero yo don't ver ninguna diferencia con mi código.
¿Me estoy perdiendo algo en mi código?
Gracias por leer mi pregunta:)
Encontré una respuesta.
var obj = {a: 123, b: "4 5 6"};
var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj));
$('<a href="data:' + data + '" download="data.json">download JSON</a>').appendTo('#container');
parece funcionar bien para mí.
Todo el crédito va a @cowboy-ben-alman, que es el autor del código anterior .