【问题标题】:How do I create a HTML form that generates a JSON file containing all the data that was submitted to the HTML form ? [closed]如何创建一个 HTML 表单,该表单生成一个 JSON 文件,其中包含提交给 HTML 表单的所有数据? [关闭]
【发布时间】:2015-12-06 00:41:46
【问题描述】:

我想创建一个 HTML 表单,用户可以在其中输入姓名、地址和性别。在用户输入该信息并单击提交后,将下载包含该信息的 JSON 文件。有人可以告诉我如何创建这样的表格吗?

【问题讨论】:

  • 我尝试使用引导表单,但我不知道如何在 javascript 中编写函数代码。
  • @AshourIecho 向我们展示您到目前为止所做的事情。然后我们会帮助你。
  • 如果你根本不会编码,那我帮不了你。没有人会为你做这项工作。你必须尝试让它发挥作用。

标签: javascript html json


【解决方案1】:

您实际上可以使用 jQuery 的 serialize() 函数。既然你用过 Bootstrap,那肯定会有 jQuery。所以你需要做的就是:

$(function () {
  $("#myForm").submit(function () {
    var jsonOutput = JSON.stringify($(this).serializeArray());
    $("#genJSON").text(jsonOutput);
    $("#download").attr("href", 'data:application/executable;charset=utf-8,' + encodeURIComponent(jsonOutput)).show();
    return false;
  });
});
* {margin: 0; padding: 0; list-style: none; font-family: 'Segoe UI';}
pre {font-family: 'Consolas', monospace; white-space: pre-wrap;}
form,
form ul,
form ul li,
form ul li label {display: block;}
form ul li {padding: 5px;}
form ul li label strong {display: inline-block; width: 100px;}
form ul li label input {padding: 3px;}
form ul li > input {margin-left: 105px; padding: 3px 10px; cursor: pointer;}
<script src="https://code.jquery.com/jquery-1.9.1.js"></script>
<form action="" id="myForm">
  <ul>
    <li>
      <label>
        <strong>Username</strong>
        <input type="text" name="Username" />
      </label>
    </li>
    <li>
      <label>
        <strong>Password</strong>
        <input type="text" name="Password" />
      </label>
    </li>
    <li>
      <label>
        <strong>Full Name</strong>
        <input type="text" name="FullName" />
      </label>
    </li>
    <li>
      <label>
        <strong>Email</strong>
        <input type="text" name="Email" />
      </label>
    </li>
    <li>
      <input type="submit" value="Get JSON" />
    </li>
  </ul>
</form>

<pre id="genJSON"></pre>
<div>
  <a id="download" style="display: none;">Download Code</a>
</div>

更新

使用data: URI方案,是可以的。

this.href = 'data:application/json;charset=utf-8,'
            + encodeURIComponent(genJSON.innerHTML);

【讨论】:

  • 这真的很接近我想要做的,但我希望将 JSON 数据下载到 JSON 文件中。
  • @AshourIecho 你需要一个服务器端脚本。
  • 客户端javascript不能生成JSON数据到用户提交表单后下载的JSON文件吗?
  • @AshourIecho 可以生成 JSON,但不能生成文件。这就是 JavaScript 的最大威力。
  • @AshourIecho 我为您找到了解决方案。你和我在一起吗?
【解决方案2】:

我制作了以下html表单

<div class="row">
    <div class="block block-bordered">
        <div class="block-header bg-gray-lighter">
            <h3 class="block-title">Profile </h3>
        </div>
        <div class="block-content">
            <form class="form-horizontal push-10-t push-10" action="base_forms_premade.html" method="post"
                  onsubmit="return false;">
                <div class="row">
                    <div class="col-sm-7">
                        <div class="form-group">
                            <div class="col-xs-6">
                                <label for="mega-firstname">Participant 1</label>
                                <input class="form-control input-lg" type="text" id="mega-firstname"
                                       name="mega-firstname" placeholder="Name">
                            </div>
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-sm-7">
                        <div class="form-group">
                            <div class="col-xs-12">
                                <label for="mega-bio">Age</label>
                                    <textarea class="form-control input-lg" id="mega-bio" name="mega-bio" rows="22"
                                              placeholder="Age"></textarea>
                            </div>
                        </div>
                    </div>
                    <div class="col-sm-5">
                        <div class="form-group"></div>
                        <div class="form-group">
                            <div class="col-xs-12">
                                <label for="mega-skills">Subject</label>
                                <select class="form-control" id="mega-skills" name="mega-skills" size="7" multiple>
                                    <option value="1">Sale</option>
                                    <option value="2">Real Estate</option>
                                    <option value="3">Employment</option>
                                    <option value="4">Loan</option>
                                    <option value="5">Renting</option>
                                    <option value="6">Finance</option>
                                    <option value="7">Construction</option>
                                </select>
                            </div>
                        </div>
                        <div class="form-group">
                            <div class="col-xs-6">
                                <label for="mega-age">Amount</label>
                                <input class="form-control input-lg" type="text" id="mega-age" name="mega-age"
                                       placeholder="Enter bitcoin amount">
                            </div>
                        </div>
                    </div>
                </div>
                <div class="form-group">
                    <div class="col-xs-12">
                        <button class="btn btn-warning" data-toggle="modal" data-target="#modal-slideup"
                                type="submit"><i class="fa  push-5-r"></i> Submit
                        </button>
                    </div>
                </div>
            </form>
        </div>
    </div>
</div>

【讨论】:

    猜你喜欢
    • 2016-12-05
    • 2016-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-08
    • 1970-01-01
    相关资源
    最近更新 更多