我正在尝试使用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变量。
答案 0 :(得分:1)
从代码中删除oReq.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
。如果您在FormData中添加文件,浏览器会自动设置multipart / form-data标头。