Ajax - 无法将数据发送为" x-www-form-urlencoded"

时间:2015-12-01 10:26:19

标签: javascript ajax

虽然我已指定了内容类型,但XMLHttpRequest仍在multipart/form-data中发送数据:

var xhr = new XMLHttpRequest();
xhr.open('POST', 'url', true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function(e) {
  //..........

//..........
xhr.send(new FormData("my_form"));

因为在Chrome开发工具中我看到了这一点:

------WebKitFormBoundaryfdsfdsfdsfds
Content-Disposition: form-data; name="name1"

something1
------WebKitFormBoundaryfdsfdsfdsfds
Content-Disposition: form-data; name="name2"

something2
------WebKitFormBoundaryfdsfdsfdsfds
Content-Disposition: form-data; name="name3"

something3

multipart/form-data

没有jquery。

1 个答案:

答案 0 :(得分:2)

来自the spec

  

<强> FORMDATA
  让请求实体体是运行multipart / form-data编码算法的结果,数据作为表单数据集,并使用utf-8作为显式字符编码。

因此FormData始终使用多部分编码对数据进行编码。除了使用您自己的代码构建x-www-form-urlencoded字符串(即不使用FormData)之外,您无能为力。