Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Ajax——无法将数据作为“发送”;x-www-form-urlencoded“;_Javascript_Ajax - Fatal编程技术网

Javascript Ajax——无法将数据作为“发送”;x-www-form-urlencoded“;

Javascript Ajax——无法将数据作为“发送”;x-www-form-urlencoded“;,javascript,ajax,Javascript,Ajax,尽管我已经指定了内容类型,XMLHttpRequest仍在multipart/formdata中发送数据: var xhr = new XMLHttpRequest(); xhr.open('POST', 'url', true); xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function(e) { //.......... //.

尽管我已经指定了内容类型,
XMLHttpRequest
仍在
multipart/formdata
中发送数据:

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
这是
多部分/表单数据

没有jquery。

来自:

表单数据
让请求实体体是运行多部分/表单数据编码算法的结果,其中数据作为表单数据集,utf-8作为显式字符编码


因此,
FormData
将始终使用多部分编码对数据进行编码。除了用自己的代码构造
x-www-form-urlencoded
字符串(即不使用
FormData
)之外,你没有别的办法。

有帮助吗?@JaromandaX,没有,因为我使用FormData.well then read-这表明
传输的数据与表单的submit()格式相同如果表单的编码类型设置为“multipart/form data”,则方法将用于发送数据。
@Mook-如果表单的编码类型设置为[that],则方法将用于发送数据。是否读取了第二个链接?你看过昆汀的答案了吗。。。使用
FormData
会导致
Content-Type=multipart/form-data
-没有办法it@Mook-因为我在回答中引用的规范明确说明了这一点。