【问题标题】:FormData constructor isn't getting any values from the formFormData 构造函数没有从表单中获取任何值
【发布时间】:2017-06-23 02:08:13
【问题描述】:

我一定犯了一个非常愚蠢的错误,但我不明白为什么这不起作用:

<html>
    <head>
        <title>Form test</title>
    </head>
    <body>
        <h1>Test a form</h1>
        <form id="myform" name="myform" action="/server">
            <input type="text" name="username" value="johndoe">
            <input type="number" name="id" value="123456">
            <input type="submit" onclick="return sendForm(this.form);">
        </form>

        <script>

            function sendForm(form) {
                var formData = new FormData(form);
                console.log("as json: " + JSON.stringify(formData));
                return false; // Prevent page from submitting.
            }
        </script>

    </body>
</html>

根据 FormData 的文档,如果你在构造函数中给它一个表单对象,它会用表单值填充自己,但是当我这样做时,我在控制台中得到一个空结果。任何想法我在这做错了什么?我在 Chrome 和 Firefox 中都试过,得到了相同的结果。这是基于 html5rocks XHR2 中的示例。

谢谢

【问题讨论】:

    标签: javascript


    【解决方案1】:

    你在这里没有做错任何事。您需要使用.entires().get().getAll() 等方法来访问值或键。前段时间我遇到了同样的问题,如果您需要将 FormData 转换为 JSON,您需要编写一些代码,它会为您执行此操作,JSON.stringify() 在这种情况下不起作用。 看看here

    或者,如果您需要 jQuery 解决方案:SO

    【讨论】:

      【解决方案2】:

      我知道我需要做什么。很简单:

      console.log("Here it is: " + JSON.stringify($('#myform').serializeArray()[0]));
      

      给出预期的结果:一个 JSON 字符串,其中包含来自表单的名称/值对。然后我可以使用 XMLHttpRequest 发送它。在这种情况下没有理由使用 FormData 对象。

      【讨论】:

        猜你喜欢
        • 2017-05-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-04-20
        • 1970-01-01
        • 2016-09-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多