文档章节

ajaxSubmit上传文件出现下载提示框问题

飞炀
 飞炀
发布于 2013/09/09 10:43
字数 400
阅读 2663
收藏 4

今天在使用jquery.form插件的ajaxSubmit上传文件时,在IE、chorme下测试,老是出现下载文件的提示框,谷歌百度了半天,基本没有人说明是什么原因的,在查看了jquery.form的源码时,发现了下面的代码:

if (options.iframe !== false && (options.iframe || shouldUseFrame)) {
        if (options.closeKeepAlive) {
            $.get(options.closeKeepAlive, function() {
                fileUploadIframe(a);
            });
        }
          else {
            fileUploadIframe(a);
          }
    }
    else if ((hasFileInputs || multipart) && fileAPI) {
        fileUploadXhr(a);
    }
    else {
        $.ajax(options);
    }
在ajaxSubmit提交表单的时候,如果表单内有文件上传的话,会判断参数是否配置的iframe为false参数,如果没有,会用创建隐藏iframe方式提交表单,如果设定了iframe为false,则判断浏览器是否支持HTML5的fileAPI,支持就直接使用XHR方式提交,否则就当作普通表单提交。

所以因为是用隐藏iframe提交的表单,如果服务器返回的是“application/json”类型的数据,IE和Chrome默认是下载文件的,因为内容是返回给了iframe,而不是ajaxSubmit的success方法。在iframe加载了返回结果后,ajaxSubmit的success方法是去读取iframe的内容来转换成json对象使用。

解决办法就是,在ajaxSubmit提交表单的配置里面,增加一个参数,服务器端判断是否是ajaxSubmit提交过来的表单,是的话就返回“text/html”类型的内容,不是就可以返回“application/json”的。

简单的说就是ajaxSubmit上传文件的话,返回的内容只能是网页内容的,否则IE就有可能出现下载提示框。

© 著作权归作者所有

飞炀
粉丝 4
博文 5
码字总数 3369
作品 0
昌平
程序员
私信 提问
JQuery-Form中的AjaxSubmit有个坑。。。

在现代浏览器,谷歌,火狐,我使用AjaxSubmit,请求的类型是Ajax,也就是判断HTTP_X_REQUESTED_WITH里面有没有xmlhttprequest,有就当ajax请求处理。结果我发现在IE下,使用 AjaxSubmit,没有...

水平凡
2013/01/21
2.1K
2
JQuery读书笔记--JQuery-Form中的AjaxForm和AjaxSubmit的区别

Query中的AjaxForm和AjaxSubmit使用差不多功能也差不多。很容易误解。 按照作者的解释: AjaxForm ajaxForm不能提交表单。在document的ready函数中,使用ajaxForm来为AJAX提交表单进行准备。...

李长春
2011/11/29
1K
0
jquery.form.js官方插件介绍Form插件,支持Ajax,支持Ajax文件上传

[JQuery框架应用]:form.js官方插件介绍 Form插件,支持Ajax,支持Ajax文件上传,功能强大,基本满足日常应用。 1、JQuery框架软件包下载 2、Form插件下载 3、Form插件的简单入门 第一步:先...

孙斐
2011/12/14
10.3K
0
jQuery.form 的最新版本是 3.14

有日子没跟进 jQuery.form 插件了,该插件已经从 2.xx 更新到 3.xx 了,目前最新版本是 3.14,下载地址: http://malsup.github.com/jquery.form.js jQuery.form 是一个全面支持表单的jQuer...

oschina
2012/09/06
17.1K
13
jQuery.post和jquery.form.ajaxsubmit有啥区别?

jquery里面自带了get和post的方法。 那么这个jquery.form.js插件里面的ajaxsubmit方法和自带的有啥区别呢? 对jquery不太理解,平时用的时候都是一边看api一边写一点。一边百度一边osc。。 ...

落舞者
2013/09/22
7.3K
7

没有更多内容

加载失败,请刷新页面

加载更多

为构建社交关系链手淘都做了啥?

作者|王卫(泓冰) 出品|阿里巴巴新零售淘系技术部 01、淘宝社交关系推荐的背景 1、互联网下半场到来:互联网的下半场,人口红利消失,各大平台需要对用户做精细化运营,用户的增长和留存是每一...

阿里云官方博客
10分钟前
3
0
Iaas/Paas/Saas有何区别,一个故事告诉你

云计算有三种服务模式,IaaS,PaaS和SaaS。单从英文全称去理解,他们分别是“基础设施即服务”“平台即服务”和“软件即服务”。 这样翻译过来可不好理解,但是我们可以举个例子。现在我们就以...

JEPaaS云平台
17分钟前
3
0
温度传感器怎么测好坏

  温度传感器也就是负温度系数热敏电阻,温度越高,电阻越小,测量时先看其阻值能不能根据温度的变化而变,再看其变化的阻值是不是在标定的范围之内。   有以下四种方法;   1、若是有...

仙溪
18分钟前
3
0
zk中ZooKeeperServer解析

内部类 ChangeRecord 处理PrepRP和FinalRP之间的信息 static class ChangeRecord { ChangeRecord(long zxid, String path, StatPersisted stat, int childCount, List<ACL> acl) {......

writeademo
28分钟前
3
0
LNMP---安装worrdpress、discuz,域名重定向,用户认证,nginx访问日志

4.34 安装wordpress 4.35 安装discuz 4.36 域名重定向 4.37 用户认证 4.38 nginx访问日志 一、安装wordpress 创建博客: 添加一个博客的虚拟主机 blog.tobe.com.conf 做如下更改 安装博客wor...

tobej
30分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部