我正尝试创建表单数据以使用FormData发送到一个发布请求(到PHP脚本)。FormData对象始终为空
然而,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对象(我检查了,这是一个有效的对象,我曾试图删除了这一行,只发送“测试”表单数据元素,然而,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” $ _ POST变量在PHP脚本。但是,如果我将File append语句添加到myFormData对象(并保留相同的'Content-Type',PHP脚本错误返回一个“不允许的访问”错误。
但是,$ _POST是根据isset($ _ POST),并且插入文件$ _FILE变量根据isset($ _ FILE)设置。
你知道变量声明会被提升到任何块范围的顶部,所以在某些行后面声明变量可能会变成undefined – iamwhitebox 2015-03-30 20:24:50
虽然这是真的,但这不是他的问题回覆。即使我将该声明移动到块的顶部,它仍然显示为空。而不是nil/null,而是一个空的FormData对象。 – 2015-03-31 01:45:09