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


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 相关文章推荐
JavaScript 事件冒泡简介及应用
Jan 11 Javascript
jquery选择器、属性设置用法经验总结
Sep 08 Javascript
JavaScript中数据结构与算法(二):队列
Jun 19 Javascript
AngularJS实现按钮提示与点击变色效果
Sep 07 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
weebox弹出窗口不居中显示的解决方法
Nov 27 Javascript
浅谈redux以及react-redux简单实现
Aug 28 Javascript
监控微信小程序中的慢HTTP请求过程详解
Jul 05 Javascript
在Node.js中将SVG图像转换为PNG,JPEG,TIFF,WEBP和HEIF格式的方法
Aug 22 Javascript
微信小程序使用蓝牙小插件
Sep 23 Javascript
jquery实现垂直手风琴菜单
Mar 04 jQuery
Vue实现Layui的集成方法步骤
Apr 10 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 数组二分法查找函数代码
2010/02/16 PHP
php流量统计功能的实现代码
2012/09/29 PHP
PHP GD库生成图像的几个函数总结
2014/11/19 PHP
php 伪造ip以及url来路信息方法汇总
2014/11/25 PHP
PHP函数实现从一个文本字符串中提取关键字的方法
2015/07/01 PHP
PHP使用PDO、mysqli扩展实现与数据库交互操作详解
2019/07/20 PHP
PHP使用递归按层级查找数据的方法
2019/11/10 PHP
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
Perl Substr()函数及函数的应用
2015/12/16 Javascript
JS中Array数组学习总结
2017/01/18 Javascript
jQuery多选框选择数量限制方法
2017/02/08 Javascript
JS实现为动态添加的元素增加事件功能示例【基于事件委托】
2018/03/21 Javascript
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
在django中使用自定义标签实现分页功能
2017/07/04 Python
用TensorFlow实现lasso回归和岭回归算法的示例
2018/05/02 Python
对python自动生成接口测试的示例讲解
2018/11/30 Python
pyenv虚拟环境管理python多版本和软件库的方法
2019/12/26 Python
Python中bisect的使用方法
2019/12/31 Python
Tensorflow tf.dynamic_partition矩阵拆分示例(Python3)
2020/02/07 Python
基于Python绘制美观动态圆环图、饼图
2020/06/03 Python
法国一家多品牌成衣精品中/高档商店:Graduate Store
2019/08/28 全球购物
善意的谎言事例
2014/02/15 职场文书
工程师岗位职责规定
2014/02/26 职场文书
英语故事演讲稿
2014/04/29 职场文书
教师优秀党员事迹材料
2014/08/14 职场文书
党的群众路线教育实践活动个人对照检查材料(教师)
2014/11/04 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
人与自然的观后感
2015/06/18 职场文书
MySQL的安装与配置详细教程
2021/06/26 MySQL
Java中常用解析工具jackson及fastjson的使用
2021/06/28 Java/Android
MySQL中几种插入和批量语句实例详解
2021/09/14 MySQL