FormData对象仅解析一个输入

时间:2013-09-03 15:24:31

标签: javascript xmlhttprequest

我有一个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

1 个答案:

答案 0 :(得分:0)

在互联网上搜索了一些后,我找到了解决方案。

错误就是这一行。

request.setRequestHeader("Content-type","application/x-www-form-urlencoded");

删除此行后,它被转移得很好。