使用jQuery将json对象下载为json文件

时间:2015-10-22 00:36:14

标签: javascript jquery html json

我正在寻找将stringfied json对象下载为文件的方法..

我确实有一个解决方案,如这个小提琴示例中所示:

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>

1 个答案:

答案 0 :(得分:10)

尝试用"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/