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


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 相关文章推荐
用js控制组织结构图可以任意拖拽到指定位置
Jan 17 Javascript
28个常用JavaScript方法集锦
Jan 14 Javascript
javascript闭包(Closure)用法实例简析
Nov 30 Javascript
JavaScript事件 &quot;事件对象&quot;的注意要点
Jan 14 Javascript
jQuery中的ready函数与window.onload谁先执行
Jun 21 Javascript
微信小程序 video组件详解
Oct 25 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
JS 在数组指定位置插入/删除数据的方法
Jan 12 Javascript
微信小程序实现提交input信息到后台的方法示例
Jan 19 Javascript
vue2.0中set添加属性后视图不能更新的解决办法
Feb 22 Javascript
JS Web Flex弹性盒子模型代码实例
Mar 10 Javascript
uni-app 自定义底部导航栏的实现
Dec 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
php过滤危险html代码
2008/08/18 PHP
PHP ajax 分页类代码
2008/11/13 PHP
php中array_unshift()修改数组key注意事项分析
2016/05/16 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
返回顶部按钮响应滚动且动态显示与隐藏
2014/10/14 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
jquery+json实现动态商品内容展示的方法
2016/01/14 Javascript
Ajax异步获取html数据中包含js方法无效的解决方法
2017/02/20 Javascript
mock.js实现模拟生成假数据功能示例
2019/01/15 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
使用layui定义一个模块并使用的例子
2019/09/14 Javascript
JS实现网站吸顶条
2020/01/08 Javascript
[02:05]2014DOTA2西雅图邀请赛 专访啸天mik夫妻档
2014/07/08 DOTA
python 实现插入排序算法
2012/06/05 Python
python使用urlparse分析网址中域名的方法
2015/04/15 Python
Python 描述符(Descriptor)入门
2016/11/20 Python
解决Django模板无法使用perms变量问题的方法
2017/09/10 Python
python学习教程之Numpy和Pandas的使用
2017/09/11 Python
Python的多维空数组赋值方法
2018/04/13 Python
Python 中字符串拼接的多种方法
2018/07/30 Python
Python Matplotlib 基于networkx画关系网络图
2019/07/10 Python
Python Selenium异常处理的实例分析
2021/02/28 Python
html5实现九宫格抽奖可固定抽中某项奖品
2020/06/15 HTML / CSS
单位领导证婚词
2014/01/14 职场文书
干部下基层实施方案
2014/03/14 职场文书
会计专业自荐书
2014/07/08 职场文书
高中升旗仪式演讲稿
2014/09/09 职场文书
2014年食堂工作总结
2014/11/20 职场文书
2015年度党员自我评价范文
2015/03/03 职场文书
道德与公民自我评价
2015/03/09 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
汽车销售员工作总结
2015/08/12 职场文书
如何利用STAR法则制作留学文书?
2019/08/26 职场文书
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android