如果我在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>
在这种情况下,如果我在var_dump($_FILES)
中使用upload_1-img.php
,它将返回一个空数组。当这个相同的表单在HTML中显式编码时,IE8正常上传文件。但是我需要在javascript中动态创建表单后才能上传文件。在IE8中使这项工作的解决方法是什么?
答案 0 :(得分:1)
尝试做这样的事情:
var form=document.createElement("<form id='imgform' action='upload_1-img.php' enctype='multipart/form-data' method='post'>");
$('body').append(form);
$('#imgform').append("<input type='file' id='image' name='image' /><input type=submit>");
来源:http://verens.com/2005/07/06/ie-bugs-dynamically-creating-form-elements/
如果您查看文章的底部,则说明
上面的代码大部分都可以在IE中使用,除非你真的需要使用它的多部分方面(例如上传文件),当它会barf时。
在这种情况下,IE似乎坚持使用以下糟糕的代码:
form = document.createElement('&lt; form action =“shoppingcart_xhr.php”method =“POST”&gt; enctype =“multipart / form-data”target =“shoppingcart_iframe”&gt;');