Php 动态创建的HTML文件输入元素不';t post数据
我有一个使用document.createElement动态创建的表单。组件以相同的方式创建。表单用于将文件上载到PHP脚本,提交时在表单的target属性指定的iframe中加载响应 不幸的是,服务器接收到一个空的$_FILES数组,当我检查POST请求时,我发现请求中没有包含文件数据。如果我使用Google Chrome developer工具来编辑动态创建的表单(在这个过程中,我只需编辑,然后完全不更改任何代码),表单提交之后就可以完美地工作,发送相关的文件数据 因此,这让我意识到用html构建表单并没有什么问题,因为它在不改变任何内容的情况下工作。这让我相信浏览器不喜欢我动态创建文件输入元素 为完整起见,以下是动态生成的表单:Php 动态创建的HTML文件输入元素不';t post数据,php,javascript,html,file-upload,dhtml,Php,Javascript,Html,File Upload,Dhtml,我有一个使用document.createElement动态创建的表单。组件以相同的方式创建。表单用于将文件上载到PHP脚本,提交时在表单的target属性指定的iframe中加载响应 不幸的是,服务器接收到一个空的$_FILES数组,当我检查POST请求时,我发现请求中没有包含文件数据。如果我使用Google Chrome developer工具来编辑动态创建的表单(在这个过程中,我只需编辑,然后完全不更改任何代码),表单提交之后就可以完美地工作,发送相关的文件数据 因此,这让我意识到用htm
<form method="POST" action="includes/uploadPic.php"
enctype="multipart/form-data" target="fileResponse">
<input type="file" name="pic">
<input type="submit" value="Upload">
</form>
试试这个:
var form = document.createElement("form");
var fileUpload = document.createElement("input");
var uploadBut = document.createElement("input");
form.method = "POST";
form.action = "includes/uploadPic.php";
form.enctype = "multipart/form-data";
form.target = "fileResponse"; /* I think you are trying to submit this from in an iframe */
fileUpload.type = "file";
fileUpload.name = "pic";
uploadBut.type = "submit";
uploadBut.value = "Upload";
form.appendChild(fileUpload);
form.appendChild(uploadBut);
dlgContent.appendChild(form);
如果将
表单
标记放在div
标记中,它不会将动态创建的元素发布到服务器。但是,如果您将它放在div
或table
标记之外,它就会工作。您没有将动态创建的表单添加到另一个元素中,是吗?您是否查看了实际的HTTP事务以查看从浏览器发送的内容?Firefox()至少有一个插件可以显示浏览器中的每个HTTP事务,并让您基本上检查所有内容。@AndrewR不是嵌套表单@Pointy我说过我检查了POST请求。一切似乎都是正确的,只是好像文件输入被忽略了。你能发布生成表单的代码吗?我已经添加了表单生成脚本
var form = document.createElement("form");
var fileUpload = document.createElement("input");
var uploadBut = document.createElement("input");
form.method = "POST";
form.action = "includes/uploadPic.php";
form.enctype = "multipart/form-data";
form.target = "fileResponse"; /* I think you are trying to submit this from in an iframe */
fileUpload.type = "file";
fileUpload.name = "pic";
uploadBut.type = "submit";
uploadBut.value = "Upload";
form.appendChild(fileUpload);
form.appendChild(uploadBut);
dlgContent.appendChild(form);