javascript - 如果没有 Node.js 或运行服务器,是否可以使用纯 JavaScript 通过 HTML 应用程序创建/输出 JSON 文件到硬盘?

标签 javascript html json

假设我有一个包含表单和输入以及提交按钮的 HTML 文档。

我想要发生的是,每次用户单击该提交按钮时,它都会生成一个包含表单数据的 JSON 文件,无需使用 Node.js服务器

如果这是一个愚蠢的问题,我很抱歉;这只是我的导师给我的作业。基本上,我拥有的是一个带有嵌入式脚本的 HTML 文件。这就像一个在线商店概念,用户凭据在表单上输入,然后生成一个包含该数据的 JSON 文件。

最佳答案

似乎每个人都忘记了 blob目的。这是一个例子。由于 stack overflow 的演示工具的工作方式,这可能很奇怪。希望对您有所帮助!

编辑:

根据评论,我意识到不是这样,而是我的代码。 您只需将 blob 的类型从 application/json 更改为 octet/stream 并添加一个下载属性(注意:这是 html5)和 tah dah!它有效。

function convertToJSON() {
  var firstname = document.getElementById('firstname').value;
  var lastname = document.getElementById('lastname').value;
  var email = document.getElementById('email').value;

  var jsonObject = {
    "FirstName": firstname,
    "LastName": lastname,
    "email": email
  }

  document.getElementById('output').value = JSON.stringify(jsonObject)
}

function saveToFile() {
  convertToJSON();
  var jsonObjectAsString = document.getElementById('output').value;

  var blob = new Blob([jsonObjectAsString], {
    //type: 'application/json'
    type: 'octet/stream'
  });
  console.log(blob);

  var anchor = document.createElement('a')
  anchor.download = "user.json";
  anchor.href = window.URL.createObjectURL(blob);
  anchor.innerHTML = "download"
  anchor.click();

  console.log(anchor);

  document.getElementById('output').append(anchor)


}
<br>First Name: <input id="firstname" value="John">
<br>Last Name:<input id="lastname" value="Pavek">
<br>Email:<input id="email" value="Example@example.com">
<br>
<button onclick="convertToJSON()">Convert</button>
<button onclick="saveToFile()">Save</button>
<hr> output: <br>
<textarea id="output"></textarea>

关于javascript - 如果没有 Node.js 或运行服务器,是否可以使用纯 JavaScript 通过 HTML 应用程序创建/输出 JSON 文件到硬盘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48199781/

相关文章:

HTML 表单输入自动缩进

javascript - jQuery 仅在过滤后导航可见项目

json - 使用 json 模板从 Visual Studio 部署 Azure VM?

json - 查询嵌入式文档数组给出错误答案

javascript - 我似乎无法找到一种方法来获取 swisnl 的 jQuery ContextMenu 上的单选按钮组单击事件

css - Bootstrap 3 推/拉问题

javascript - 为什么 v-for 在这个 VueJS todo 应用程序中不起作用?

javascript - 我可以以特定方式格式化通过 PHP 的 json_encode() 编码的变量的语法吗?

javascript - 如何仅在单击时折叠导航栏菜单,而不是打开,无法弄清楚这个

javascript - JavaScript 和 Python Promise/Awaitable Evaluation 的区别