无刷新上传文件并返回自定义值


Posted in Javascript onJune 11, 2015

今天开发过程中遇到了这样一个问题:需要将Excel上传至服务器进行解析,但是在文档不合适的情况下希望可以不刷新页面提示用户文档不合适。冥思苦想了半天,在网上找了不少资料最终试验成功,在此分享下处理方法:

首先先说下处理思路:在页面上添加一个隐藏的iframe,设置form表单的target属性设置为iframe的id,这样form提交时会将excel文件以文件流的形式传到后台,在后台接收后可进行自定义操作,之后返回的信息将显示在iframe中而不进行跳转,iframe之前设置为隐藏,所以页面不会有变化,然后我们需要监听iframe内容的变化,然后将内容传入主窗口中的JS方法进行下一步的自定义处理。

页面代码如下:

<form id="input" action="importExcel.jhtml" method="post" enctype="multipart/form-data" target="hiddenIFrame">
<input id="excelFile" name="file" type="file" />

<input type="submit" class="button" value="导入excel"/>
</form>
<iframe id='hiddenIFrame' name='hiddenIFrame' style="display:none;"></iframe>

JS代码如下(需引入jqeury):

$(function(){
  $("#hiddenIFrame").load(function(){
    var wnd = this.contentWindow;
    var str = $(wnd.document.body).html();
    callback(str);
  });
})
 
function callback(info){
  alert(info);
}

 后台代码就不过多介绍了与传统提交一样,后台会根据input组件的name值获取到一个同名的文件流(例如上面页面代码中input组件的name是file,那么后台接收到的是一个名字叫file的文件流),接收后即可进行自定义操作。

Javascript 相关文章推荐
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
jQuery 隔行换色 支持键盘上下键,按Enter选定值
Aug 02 Javascript
解析Javascript小括号“()”的多义性
Dec 03 Javascript
node.js中的url.parse方法使用说明
Dec 10 Javascript
Javascript设计模式之观察者模式的多个实现版本实例
Mar 03 Javascript
js实现模拟计算器退格键删除文字效果的方法
May 07 Javascript
Bootstrap每天必学之js插件
Nov 30 Javascript
基于MVC4+EasyUI的Web开发框架形成之旅之界面控件的使用
Dec 16 Javascript
Zero Clipboard实现浏览器复制到剪贴板的方法(多个复制按钮)
Mar 24 Javascript
js获取Html元素的实际宽度高度的方法
May 19 Javascript
ES6中class类用法实例浅析
Apr 06 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
Sep 25 Javascript
JavaScript中setMonth()方法的使用详解
Jun 11 #Javascript
JS制作手机端自适应缩放显示
Jun 11 #Javascript
实现placeholder效果的方案汇总
Jun 11 #Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 #Javascript
JavaScript中的setMilliseconds()方法使用详解
Jun 11 #Javascript
jQuery使用drag效果实现自由拖拽div
Jun 11 #Javascript
javascript 常见功能汇总
Jun 11 #Javascript
You might like
PHP 中检查或过滤IP地址的实现代码
2011/11/27 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
PHP实现非阻塞模式的方法分析
2018/07/26 PHP
js压缩工具 yuicompressor 使用教程
2010/03/31 Javascript
基于jquery的合并table相同单元格的插件(精简版)
2011/04/05 Javascript
固定背景实现的背景滚动特效示例分享
2013/05/19 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
JS保留两位小数 四舍五入函数的小例子
2013/11/20 Javascript
Jquery对数组的操作技巧整理
2014/03/25 Javascript
JavaScript中String.prototype用法实例
2015/05/20 Javascript
纯HTML5制作围住神经猫游戏-附源码下载
2015/08/23 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
Bootstrap中的fileinput 多图片上传及编辑功能
2016/09/05 Javascript
jquery 动态增加,减少input表单的简单方法(必看)
2016/10/12 Javascript
jQuery加载及解析XML文件的方法实例分析
2017/01/22 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
Vue仿手机qq的实例代码(demo)
2017/09/08 Javascript
Bootstrap modal只加载一次数据的解决办法(推荐)
2017/11/24 Javascript
vue.js中$set与数组更新方法
2018/03/08 Javascript
VSCode使用之Vue工程配置eslint
2019/04/30 Javascript
在VUE style中使用data中的变量的方法
2020/06/19 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
Openlayers显示瓦片网格信息的方法
2020/09/28 Javascript
Python的高级Git库 Gittle
2014/09/22 Python
Python基于pygame实现的font游戏字体(附源码)
2015/11/11 Python
python爬虫selenium和phantomJs使用方法解析
2019/08/08 Python
用CSS3实现无限循环的无缝滚动的实例代码
2017/07/04 HTML / CSS
国际旅客访问北美最大的汽车租赁提供商:Alamo Rent A Car
2018/06/13 全球购物
质量保证书范本
2014/04/29 职场文书
网吧消防安全责任书
2014/07/29 职场文书
单位介绍信格式范文
2015/05/04 职场文书
30岁前绝不能错过的10本书
2019/08/08 职场文书
python如何正确使用yield
2021/05/21 Python
SQL试题 使用窗口函数选出连续3天登录的用户
2022/04/24 Oracle
js前端图片加载异常兜底方案
2022/06/21 Javascript