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


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 相关文章推荐
firefo xml 读写实现js代码
Jun 11 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
JavaScript实现强制重定向至HTTPS页面
Jun 10 Javascript
jQuery自定义滚动条完整实例
Jan 08 Javascript
改变checkbox默认选中状态及取值的实现代码
May 26 Javascript
jQuery 自定义下拉框(DropDown)附源码下载
Jul 22 Javascript
vue监听滚动事件实现滚动监听
Apr 11 Javascript
使用node.js搭建服务器
May 20 Javascript
js+html5实现页面可刷新的倒计时效果
Jul 15 Javascript
Bootstrap 模态框(Modal)带参数传值实例
Aug 20 Javascript
聊聊Vue.js的template编译的问题
Oct 09 Javascript
详解JavaScript自定义函数
Jul 29 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
从零开始 教你如何搭建Discuz!4.1论坛
2006/07/07 PHP
PHP排序之二维数组的按照字母排序实现代码
2011/08/13 PHP
php使用curl抓取qq空间的访客信息示例
2014/02/28 PHP
解决PhpMyAdmin中导入2M以上大文件限制的方法分享
2014/06/06 PHP
showModelessDialog()使用详解
2006/09/21 Javascript
JS去除字符串的空格增强版(可以去除中间的空格)
2009/08/26 Javascript
基于jQuery的仿flash的广告轮播
2010/11/05 Javascript
Dom 结点创建 基础知识
2011/10/01 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
详解JavaScript基于面向对象之继承实例
2015/12/16 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
详解javascript获取url信息的常见方法
2016/12/19 Javascript
bootstrap如何让dropdown menu按钮式下拉框长度一致
2017/04/10 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
jquery ztree实现右键收藏功能
2017/11/20 jQuery
Vuex 模块化使用详解
2019/07/31 Javascript
使用PDB简单调试Python程序简明指南
2015/04/25 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Pycharm技巧之代码跳转该如何回退
2017/07/16 Python
对python使用http、https代理的实例讲解
2018/05/07 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
python实现倒计时小工具
2019/07/29 Python
Python数据处理篇之Sympy系列(五)---解方程
2019/10/12 Python
Django实现分页显示效果
2019/10/31 Python
Django框架模板用法入门教程
2019/11/04 Python
Python读取图像并显示灰度图的实现
2020/12/01 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
Python中pass语句的作用是什么
2016/06/01 面试题
保卫钓鱼岛口号
2014/06/20 职场文书
2015庆祝七一建党节94周年活动总结
2015/03/20 职场文书
2015年房产销售工作总结范文
2015/05/22 职场文书
高一作文之乐趣
2019/11/21 职场文书
用python开发一款操作MySQL的小工具
2021/05/12 Python