FormData对象始终为空

时间:2015-03-30 20:18:37

标签: javascript php form-data

我正在尝试使用FormData创建表单数据以在post请求(到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);

< 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);

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

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

1 个答案:

答案 0 :(得分:1)

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