我有一个FormData对象,我使用表单的ID创建。此表单具有多个输入值。然后我使用XMLHttpRequest()发送FormData。
然而在请求中(我使用谷歌Chrome的开发者工具调试过)我可以在表单数据中看到,当我查看“已解析”版本时,它只发送第一个输入值。但是,当我查看FormData的源时,所有输入值都在那里。
我的问题
为什么在查看FormData
的已解析版本时,我只能看到一个值,而查看来源,我可以看到所有这些值?
这可能是服务器端其他问题的原因,因为它没有正确检索任何参数。
编辑 - 部分代码
表格的
<form id='properties'>
<input type='text' name='name' value='previous'/>
<input type='text' name='occupation' value='unknown'/>
<input type='hidden' name='ID' value='23'/>
</form>
Javascript XMLHttpRequest方法
function sendRequest() {
var request = getHttpRequest();
request.onreadystatechange=function() {
if (request.readyState==4 && request.status == 200) {
console.log("Received Response: "+request.response);
}
}
request.open("POST","resort-service.php",true);
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
var form = new FormData(document.getElementById("properties"))
request.send(form);
}
Google Chrome开发者工具 - 用于在XMLHttpRequest
发送和响应后对其进行调试。
解析数据:
------WebKitFormBoundary94v9BnBjfFvkLOzw
Content-Disposition: form-data; name:"name"
previous
------WebKitFormBoundary94v9BnBjfFvkLOzw
Content-Disposition: form-data; name
来源数据:
------WebKitFormBoundary94v9BnBjfFvkLOzw
Content-Disposition: form-data; name="name"
previous
------WebKitFormBoundary94v9BnBjfFvkLOzw
Content-Disposition: form-data; name="occupation"
unknown
------WebKitFormBoundary94v9BnBjfFvkLOzw
Content-Disposition: form-data; name="ID"
23
答案 0 :(得分:0)
在互联网上搜索了一些后,我找到了解决方案。
错误就是这一行。
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
删除此行后,它被转移得很好。