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


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写个checkbox——类似邮箱全选功能
Mar 19 Javascript
javascript初学者常用技巧
Sep 02 Javascript
Jquery 实现图片轮换
Jan 28 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
jQuery-1.9.1源码分析系列(十)事件系统之事件包装
Nov 20 Javascript
ui组件之input多选下拉实现方法(带有搜索功能)
Jul 14 Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 Javascript
微信小程序 五星评价功能的实现
Mar 09 Javascript
基于vue.js轮播组件vue-awesome-swiper实现轮播图
Mar 17 Javascript
如何实现双向绑定mvvm的原理实现
May 28 Javascript
利用JS响应式修改vue实现页面的input值
Sep 02 Javascript
javascript利用canvas实现鼠标拖拽功能
Jul 23 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数据采集的详解
2013/06/02 PHP
PHP缓存机制Output Control详解
2014/07/14 PHP
PHP中foreach()用法汇总
2015/07/02 PHP
PHP与Ajax相结合实现登录验证小Demo
2016/03/16 PHP
php实现获取近几日、月时间示例
2019/07/06 PHP
Jquery下attr和removeAttr的使用方法
2010/12/28 Javascript
JQuery入门——用bind方法绑定事件处理函数应用介绍
2013/02/05 Javascript
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
JS中图片缓冲loading技术的实例代码
2013/08/29 Javascript
jQuery插件 selectToSelect使用方法
2013/10/02 Javascript
jQuery解析Json实例详解
2015/11/24 Javascript
jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)
2016/06/28 Javascript
js判断浏览器是否支持严格模式的方法
2016/10/04 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
2016/11/28 Javascript
ionic2 tabs使用 Modal底部tab弹出框
2016/12/30 Javascript
easyui 中的datagrid跨页勾选问题的实现方法
2017/01/18 Javascript
jquery实现下拉菜单的手风琴效果
2017/07/23 jQuery
EasyUI的DataGrid每行数据添加操作按钮的实现代码
2017/08/22 Javascript
JS实现访问DOM对象指定节点的方法示例
2018/04/04 Javascript
node基于puppeteer模拟登录抓取页面的实现
2018/05/09 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
2019/09/21 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
python中的set实现不重复的排序原理
2018/01/24 Python
Python3中的json模块使用详解
2018/05/05 Python
Python中安装easy_install的方法
2018/11/18 Python
PyQt5实现简易电子词典
2019/06/25 Python
基于Python安装pyecharts所遇的问题及解决方法
2019/08/12 Python
解决Python3.8用pip安装turtle-0.0.2出现错误问题
2020/02/11 Python
英国门销售网站:Green Tree Doors
2020/01/07 全球购物
应届毕业生的个人自我鉴定
2013/10/24 职场文书
廉洁自律承诺书
2014/03/27 职场文书
如何设计高效合理的MySQL查询语句
2021/05/26 MySQL
springboot+WebMagic+MyBatis爬虫框架的使用
2021/08/07 Java/Android
MySQL中的引号和反引号的区别与用法详解
2021/10/24 MySQL