FormData的正确编码类型是什么?

时间:2013-06-12 18:11:02

标签: javascript

我注意到,对于我的POST请求,我不得不使用:

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

或者会有错误。

但是,当发送FormData对象作为我唯一的数据时,我没有设置requestHeaders并且工作正常。

我发现这很奇怪,一个需要一个标题,一个不需要。只是想验证。

MDN docs状态

// xhr.setRequestHeader("Content-type", "multipart/form-data");
隐式使用

。 I.E.实际上并没有设置此标头,因为它默认用于表单数据。

设置它实际上会导致错误。根据文档设置它是正确的,这会破坏你的代码。

来自文档:

  

如果设置了编码类型,它将使用与表单相同的格式   到“multipart / form-data”。

是否有任何正式文档描述了如何使用此FormData,即如何正确使用它与ajax。

我使用反复试验让它工作但我想要一个可靠的参考,所以我对我的代码更有信心。

1 个答案:

答案 0 :(得分:0)

正确的编码类型是您用于表单数据的任何编码。标题的目的是告诉服务器主机解释您正在发送的数据。

这是否重要取决于服务器应用程序如何处理数据。如果它读取原始输入,则标题无关紧要。但是如果它使用由库或运行时环境提供的表单处理,例如填写$_POST的PHP,则必须对表单数据进行编码,并且标题必须与编码匹配。