如何使用AJAX提交表单使用enctype =“multipart / form-data”?
答案 0 :(得分:11)
简短回答:你不是。您无法通过AJAX上传文件。
通常的解决方法是将表单的目标设置为隐藏的iframe
并使用普通的非AJAXy POST在那里提交表单,以达到预期的效果:
<form target="hiddenIframe" method="post" enctype="multipart/form-data">
...
</form>
<iframe name="hiddenIframe" id="hiddenIframe" style="display: none;" />
使用此技术的jQuery plugin。
XMLHttpRequest level 2增加了对通过AJAX上传文件的支持,其浏览器支持现已发展并且不断增长。这是browser support overview。
答案 1 :(得分:-1)
使用malsup的jquery form plugin,它将处理XHR以及IE上传ajax所需的隐藏iframe。
此处的代码段:
<form id="formid" action="" enctype="multipart/form-data" method="POST" accept-charset="utf-8">
.
.
.
</form>
<script type="text/javascript">
$(document).ready(function()
{
var options = {
cache:'false', //IE FIX
data: $('#formid').serialize(),
dataType: 'json',
processData: false,
contentType: false,
success: function(data)
{
//success action
},
error: function(XMLHttpRequest, textStatus, errorThrown)
{
//error action
}
};
$('#formid').ajaxForm(options);
});
</script>