【发布时间】:2013-02-15 13:17:42
【问题描述】:
如果我像这样在 HTML 中明确写出一个表单:
<form action='upload_1-img.php' enctype='multipart/form-data' method='post'>
<input type='file' id='image' name='image'><input type='submit'>
</form>
然后在 IE 中一切都按预期进行。 但如果我执行以下操作,它在 Chrome 和 FF 中有效,但在 IE8 中无效:
<html>
<head>
<script>
$(document).ready(function(){
imgform = document.createElement('form');
imgform.id = 'imgform';
imgform.method='post';
imgform.enctype='multipart/form-data';
imgform.action ='upload_1-img.php';
$('body').append(imgform);
$('#imgform').append("<input type='file' id='image' name='image' /><input type=submit>");
});
</script>
</head>
<body>
</body>
</html>
在这种情况下,如果我在upload_1-img.php 中使用var_dump($_FILES),它会返回一个空数组。当相同的表单在 HTML 中显式编码时,IE8 会正常上传文件。但是我需要在 javascript 中动态创建表单后上传文件才能工作。在 IE8 中进行这项工作的解决方法是什么?
【问题讨论】:
-
出于兴趣,当您使用 jQuery 时,为什么要使用
document.createElement作为form元素?您不能按照您已经为<input>元素编写的方式编写整个<form>....</form>块吗? -
正如 SDC 所说,jquery 会解决您的问题。但是,我怀疑
imgform.enctype='multipart/form-data';实际上是您的问题。尝试使用imgform.setAttribute
标签: javascript forms internet-explorer file-upload internet-explorer-8