FormData对象始终为空

Mic*_*and 5 javascript php form-data

我正在尝试创建表单数据以使用FormData在发布请求(到PHP脚本)中发送.

但是,FormData对象始终为空:

var oReq = new XMLHttpRequest();
var url = "http://www.test.com/test.php";
oReq.open("POST", url, true);
oReq.setRequestHeader("Content-Type","multipart/form-data");
var myFormData = new FormData();
myFormData.append("formType","PDF");
myFormData.append("pdf", pdf.output(),"thisPDF.pdf");
oReq.send(myFormData);
Run Code Online (Sandbox Code Playgroud)

'pdf'变量是一个jsPDF对象(我已经检查过它是一个有效的对象,我试图删除该行,只发送了"test"表单数据元素.但是,myFormData始终是一个空对象.希望我只是在这里错过了一些简单的东西.

另外,当我尝试检查PHP脚本中是否存在表单元素时,它根本没有显示$ _POST和$ _FILE元素.

附加信息:

当我尝试这段代码时:

var oReq = new XMLHttpRequest();
var url = "http://www.test.com/test.php";
oReq.open("POST", url, true);
oReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
var myFormData = new FormData();
myFormData.append("formType","PDF");
alert(JSON.stringify(myFormData));
oReq.send(myFormData);
Run Code Online (Sandbox Code Playgroud)

然后我可以访问php脚本中的"formType"$ _POST变量.但是,如果我将文件追加语句添加到myFormData对象(并保持相同的'Content-Type',则PHP脚本错误会返回"不允许访问"错误.

但是,在两种情况下都根据isset($ _ POST)设置$ _POST,并且插入文件时,根据isset($ _ FILE)设置$ _FILE变量.

Eli*_*las 1

oReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");从代码中删除。如果您在 FormData 中添加文件,浏览器会自动设置 multipart/form-data 标头。