Javascript 如何使用enctype=";使用AJAX提交表单;“多部分/表单数据”;?
如何使用enctype=“multipart/Form data”使用AJAX提交表单?简短回答:您没有。您不能通过AJAX上传文件 通常的解决方法是将表单的目标设置为隐藏的Javascript 如何使用enctype=";使用AJAX提交表单;“多部分/表单数据”;?,javascript,html,ajax,Javascript,Html,Ajax,如何使用enctype=“multipart/Form data”使用AJAX提交表单?简短回答:您没有。您不能通过AJAX上传文件 通常的解决方法是将表单的目标设置为隐藏的iframe,然后使用普通的非AJAXy帖子在那里提交表单,以达到预期效果: <form target="hiddenIframe" method="post" enctype="multipart/form-data"> ... </fo
iframe
,然后使用普通的非AJAXy帖子在那里提交表单,以达到预期效果:
<form target="hiddenIframe" method="post" enctype="multipart/form-data">
...
</form>
<iframe name="hiddenIframe" id="hiddenIframe" style="display: none;" />
...
有一种方法使用这种技术
编辑以添加:
增加了对通过AJAX上传文件的支持,它的浏览器支持现在很好,而且还在增长。这里有一个。这里有一个即使在IE8及以上版本中也能使用的方法:
使用malsup,它将同时处理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>
.
.
.
$(文档).ready(函数()
{
变量选项={
缓存:'false',//IE修复
数据:$('#formid')。序列化(),
数据类型:“json”,
processData:false,
contentType:false,
成功:功能(数据)
{
//成功行动
},
错误:函数(XMLHttpRequest、textStatus、errorshown)
{
//错误动作
}
};
$('#formid')。ajaxForm(选项);
});
您可以使用XMLHttpRequest方法。看这个:这个信息已经过时了,现在可以通过AJAX上传文件了,而且非常简单。看看XHR2。HTML5Rocks上有一篇好文章:jQuery插件的链接现在无效。我正在尝试为旧浏览器修复一个解决方案,这样就可以派上用场了(如果你能再次找到的话):)