我一定是犯了一个非常愚蠢的错误,但我无法弄清楚为什么这不起作用:
<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的示例。
谢谢
答案 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对象。