Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用enctype=";使用AJAX提交表单;“多部分/表单数据”;?_Javascript_Html_Ajax - Fatal编程技术网

Javascript 如何使用enctype=";使用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

如何使用enctype=“multipart/Form data”使用AJAX提交表单?

简短回答:您没有。您不能通过AJAX上传文件

通常的解决方法是将表单的目标设置为隐藏的
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插件的链接现在无效。我正在尝试为旧浏览器修复一个解决方案,这样就可以派上用场了(如果你能再次找到的话):)