2015-10-22 4 views
0

Я ищу способы, чтобы загрузить stringfied объект JSON в виде файла ..Скачать JSON объект как файл JSON с помощью JQuery

У меня есть одно решение, как представлено в этой скрипичной Например:

FIDDLE

Моя рабочая версия выглядит следующим образом

HTML

From data attribute of span: 
    <span id="a-data"></span> 
    <span id="obj-data" data-obj2='{"obj-1": "text-1","obj-2": "text-2","obj-3": "text-3"}'></span> 

JavaScript

var obj = $("#obj-data").data("obj2"); 
    var data = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(obj)); 
    $('<a href="data:' + data + '" download="data.json">Download Me</a>').appendTo("#a-data"); 

Я бы предпочел, если я мог бы использовать этот HTML. Вы могли бы предложить способ приблизиться к этому?

From data attribute of self: 
<div id="data" data-obj='{"obj-1": "text-1","obj-2": "text-2","obj-3": "text-3"}'> 
    Download Me 
</div> 

ответ

4

Попробуйте заменить "application/json" для "text/json", вызывая .click() на DOM элемент a, удаление a в click обработчиком

$("#data").click(function() { 
 
    $("<a />", { 
 
    "download": "data.json", 
 
    "href" : "data:application/json," + encodeURIComponent(JSON.stringify($(this).data().obj)) 
 
    }).appendTo("body") 
 
    .click(function() { 
 
    $(this).remove() 
 
    })[0].click() 
 
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"> 
 
</script> 
 
<div id="data" data-obj='{"obj-1": "some text","obj-2": "text-2","obj-3": "text-3"}'> 
 
    Download Me 
 
</div>

jsfiddle http://jsfiddle.net/kda2rdLy/

+1

по какой-то причине это, кажется, удалить пробелы в JSON строка, когда файл данных открыт – GRowing

+0

В этом примере это можно увидеть http://jsfiddle.net/qgLgwshs/ – GRowing

+1

Этот объект {"key": "some text"} заканчивается следующим образом {"key": "sometext"} в этом примере .. " некоторый текст "не должен сливаться в" sometext " – GRowing

Смежные вопросы