1

我有一个使用表单 ID 创建的 FormData 对象。此表单有多个输入值。然后我使用 XMLHttpRequest() 发送 FormData。

但是在请求中(我已经使用 Google 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
4

1 回答 1

0

在互联网上进行了更多搜索后,我找到了解决方案。

错误是这一行。

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

删除这条线后,它被转移得很好。

于 2013-09-03T16:22:26.790 回答