FormData构造函数没有从表单中获取任何值

时间:2017-02-06 07:42:48

标签: javascript

我一定是犯了一个非常愚蠢的错误,但我无法弄清楚为什么这不起作用:

<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的示例。

谢谢

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我想出了我需要做的事情。很简单:

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

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