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

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

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

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

#1楼 票数:1

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

  ask by Michael Reiland translate from so

未解决问题?本站智能推荐:

1回复

通过XHR发送FormData后,$_REQUEST始终为空

我正在尝试使用FormData对象将文件和非文件的一系列字段发送到服务器上的PHP端点。 但是,无论我做什么,PHP端点内的$_REQUEST超全局变量始终为空白。 我用来发送FormData的代码如下。
3回复

如何将空数组附加到FormData对象?

我有以下问题: 一个 html 表单,在 FormData 上使用了 N 个复选框,通过 ajax 发送请求及其信息。 在 PHP 上, $_POST['teste'] 变量不存在... 我知道我可以在 PHP 上使用“if(isset(...))”,但我真的不喜欢那个解决方案。 对我来说,最好的解
1回复

FormData为空(在PHP中)

我一直在使用它来通过AJAX和jQuery处理表单 运行良好。 我在页面上添加了第二个表单(搜索位于顶部,上传器位于底部) 我知道$('form')[0]将抢占页面上的第一个表单,因此自然而然地,我将JavaScript更改为$('form')[1] 。 当我在其上执行console
6回复

通过jQuery和FormData的AjaxPOST请求-$_POST在PHP上为空

我希望使用jQuery和FormData通过ajax将图像上传到服务器。 我的jQuery代码如下 当用户选择要上载的新文件时,将调用此代码。 我的服务器后端是PHP,它按如下方式处理请求 POST请求确实发生,但$ _POST仍为空。 我试着寻找解决方案,但找不到一个确切的
2回复

FormData控制台记录[对象FormData],而不是实际文件

我有以下代码,使用ajax上传文件,因为我不想使用form action。 但是我做不到。 代码是: Ajax代码是: }); 我在各种线程上看到了很多讨论,但没有一个对我有用。 我之前没有做过任何错误,我不知道这是什么错误:(这里我错了。是否需要包含任何js文件?
1回复

无法读取PHP中的FormData对象

我想在具有Ajax功能并使用formdata对象的服务器上上传一个文件。 单击上传按钮时,显示输入文件的所有值。 名称:“ Lich hoc.txt” 尺寸:1950 类型:“文字/纯文字” 但是我的麻烦是我无法在我的php代码中读取对象,var_dump没什么。 我使
1回复

无法将新值附加到formData对象

我很难将额外的信息附加到formData对象,因此可以在PHP中使用它来添加到SQL数据库。 不幸的是它依赖于AJAX所以测试你需要在服务器或本地主机上运行它,但我已经包含了一个简单的PHP文件,需要被称为'StackedTest.php' 我一直在关注MDN上的例子,但经过大量时间花在寻
1回复

使用JavaScript的FormData对象提交的数据返回整个html

我正在使用JavaScript的FormData对象从表单提交数据。 基本上,我有以下代码: HTML 我正在使用AJAX提交此表单。 这是代码: JavaScript的 这是接收请求的test.php文件: PHP PHP脚本收到发布的表单。 问题是,PHP脚本发送的