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


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 onmouseout 解决办法
Jul 17 Javascript
浅谈Javascript嵌套函数及闭包
Nov 09 Javascript
JS获取网页属性包括宽、高等等
Apr 03 Javascript
jQuery的缓存机制浅析
Jun 07 Javascript
js动态修改表格行colspan列跨度的方法
Mar 30 Javascript
学习Bootstrap组件之下拉菜单
Jul 28 Javascript
EasyUI加载完Html内容样式渲染完成后显示
Jul 25 Javascript
js实现常见的工具条效果
Mar 02 Javascript
使用angular帮你实现拖拽的示例
Jul 05 Javascript
解决Jquery下拉框数据动态获取的问题
Jan 25 jQuery
关于redux-saga中take使用方法详解
Feb 27 Javascript
element el-input directive数字进行控制
Oct 11 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
Session的工作方式
2006/10/09 PHP
[原创]效率较高的php下读取文本文件的代码
2008/07/02 PHP
IIS+fastcgi下PHP运行超时问题的解决办法详解
2013/06/20 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
php分页函数示例代码分享
2014/02/24 PHP
ThinkPHP调用百度翻译类实现在线翻译
2014/06/26 PHP
php正则匹配文章中的远程图片地址并下载图片至本地
2015/09/29 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
PHP实现微信提现(企业付款到零钱)
2019/08/01 PHP
实现超用户体验 table排序javascript实现代码
2009/06/22 Javascript
获取客户端电脑日期时间js代码(jquery)
2012/09/12 Javascript
jQuery之折叠面板的深入解析
2013/06/19 Javascript
在NodeJS中启用ECMAScript 6小结(windos以及Linux)
2014/07/15 NodeJs
chrome调试javascript详解
2015/10/21 Javascript
js实现的奥运倒计时时钟效果代码
2015/12/09 Javascript
JavaScript+html5 canvas绘制的圆弧荡秋千效果完整实例
2016/01/26 Javascript
jQuery EasyUI中DataGird动态生成列的方法
2016/04/05 Javascript
JavaScript判断页面加载完之后再执行预定函数的技巧
2016/05/17 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
详解Angular2表单-模板驱动的表单(Template-Driven Forms)
2017/08/04 Javascript
Vue.js实现的计算器功能完整示例
2018/07/11 Javascript
layui数据表格 table.render 报错的解决方法
2019/09/29 Javascript
javascript开发实现贪吃蛇游戏
2020/07/31 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
深入浅析python 中的匿名函数
2018/05/21 Python
pytorch中的embedding词向量的使用方法
2019/08/18 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
friso美素佳儿官方海外旗舰店:荷兰原产原罐
2017/07/03 全球购物
一套VC试题
2015/01/23 面试题
学生感冒英文请假条
2014/02/04 职场文书
《鸟的天堂》教学反思
2014/02/27 职场文书
党支部公开承诺书
2014/03/28 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
高二化学教学反思
2016/02/22 职场文书
Nginx部署vue项目和配置代理的问题解析
2021/08/04 Servers
Win10此设备不支持接收Miracast无法投影的解决方法
2022/07/07 数码科技