gpt4 book ai didi

javascript - FormData 对象始终为空

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:27 26 4
gpt4 key购买 nike

我正在尝试使用 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 对象(我已经检查它是一个有效的对象并且我试图删除该行并且只发送“测试”表单数据元素。然而,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 变量。但是,如果我将 File append 语句添加到 myFormData 对象(并保持相同的“Content-Type”),则 PHP 脚本会返回“不允许访问”错误。

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

最佳答案

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

关于javascript - FormData 对象始终为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29355499/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com