HTML输入到外部JSON文件

时间:2018-03-13 00:55:38

标签: javascript jquery html json ajax

我有一个基本的输入表格,包括姓名,年龄,电子邮件,密码。我正在尝试将其从HTML传递给Javascript,然后将其转换为外部JSON文件中的JSON字符串,然后我可以从中提取。我似乎无法将输入数据发布到我的json文件。我的JSON文件名为'formdata',它与我的html / javascript以及我的jquery位于同一目录中。你看到可能导致它的原因吗?

    <main>
    <form id="myform" type="post">
        <fieldset>
            <legend>Sign Up</legend>
            <p>Please sign up for our website here!</p>
            <div class="elements">
                <label for="name">Name :</label>
                <input required="required" type="text" onfocus="this.value=''" value="Please enter your name here" name="name" size="25" />
            </div>
            <div class="elements">
                <label for="username">Username :</label>
                <input required="required" type="text" onfocus="this.value=''" value="Please enter your email here" name="email" size="25" />
            </div>
            <div class="elements">
                <label for="email">Email :</label>
                <input required="required" type="text" onfocus="this.value=''" value="Please enter your email here" name="email" size="25" />
            </div>
            <div class="elements">
                <label for="password">Password :</label>
                <input required="required" type="password" value="" name="password" size="32" minlength="6" maxlength="32" />
            </div>
            <div class="elements">
                <label for="age">Age :</label>
                <input required="required" type="number" value="" id="age" name="age" size="3" />
            </div>
            <div class="elements">
                <label for="gender">Gender :</label>
                <input type="radio" name="gender" value="Male" checked="checked" id="r1"> Male
                <input type="radio" name="gender" value="Female" id="r2"> Female
            </div>
            <div class="submit">
                <input type="submit" id="submit" name="submit" class="btn" value="Send" />
            </div>
        </fieldset>
    </form>
    <script type="text/javascript">
        $(document).ready(function() {
            $("#btn").click(function(e) {
                var jsonData = {};

                var formData = JSON.stringify($("#formdata").serializeArray());

                $.each(formData, function() {
                    if (jsonData[this.name]) {
                        if (!jsonData[this.name].push) {
                            jsonData[this.name] = [jsonData[this.name]];
                        }
                        jsonData[this.name].push(this.value || '');
                    } else {
                        jsonData[this.name] = this.value || '';
                    }

                });
                console.log(jsonData);
                $.ajax({
                    url: "action.php",
                    type: "POST",
                    data: formData,
                    success: function(){},
                    dataType: "json",
                    contentType : "application/json",
                });
                e.preventDefault();
            });
        });

    </script>
<script src="https://code.jquery.com/jquery-3.1.1.js" integrity="sha256-16cdPddA6VdVInumRGo6IbivbERE8p7CQR3HzTBuELA=" crossorigin="anonymous"></script>
    </main>

1 个答案:

答案 0 :(得分:0)

这不能完全解决您的问题,但我发现您发布的代码有几个问题。

  1. 您需要将提交按钮上的id属性的值从提交更改为btn,以便此行可以正常工作$("#btn").click(function(e) {即。 <input type="submit" id="btn"

  2. var formData = JSON.stringify($("#formdata").serializeArray());更改为var formData = JSON.stringify($("#myForm").serializeArray());,因为您的表单的ID实际上是&#34; myForm&#34;

  3. 您有name="email"的两个输入,我怀疑第一个输入实际上是name="username"

  4. 另外,您提到要将这些结果保存到JSON文件中。您的javascript AJAX请求正在提交给&#34; action.php&#34;所以我假设你有一个PHP脚本,它处理结果并写入JSON文件。这部分有点模糊,所以只是从我看到的内容中澄清。

    最后,从安全的角度来看,我很担心这个表单要求输入密码,并且你提到将它存储在服务器上的JSON文件中。你不应该用密码做到这一点。它们并不意味着以纯文本形式存储,应该承担很大的责任。

    希望这有帮助!