仿iframe效果Aajx文件上传实例


Posted in Javascript onNovember 18, 2016

前段时间在解决ajax上传文件时折腾了好一阵。直接用$.post上传文本信息肯定是没有问题的。但是$.post直接上传图片是不可行的。

后来看到网上的一些解决方案,有现成的ajax上传文件的封装的方法也有利用flash的。flash确实是个好方法 但是不是每个人都会flash的而且下载下来现成的方法要做修改也不是件易事,且文件相对较大。最后只好模拟iframe来实现。发现相当的简单。

html:

<iframe name="ajaxUpload" style="display:none"></iframe> 
<form name="from1" id="from1" method="post" action="url" enctype="multipart/form-data"target="ajaxUpload"> 
 <table> 
  <tr> 
    <td>附件:</td> 
    <td><input type="file" id="document" name="document"/></td> 
  </tr> 
 </table> 
 </form>

这里是重点。要上传文件enctype这个属性不可少,target的值改为iframe的name的值。

下面写一下js代码,我是用的jQuery所以在用的时候载入jquery的库是必不可少的。

$(function(){ 
     if($.browser.msie){ 
       window.form1.submit();}else{ 
       $("#form1").submit();} 
    });

这里是做了一个浏览器版本的判断,因为IE是不太符合规范的一个浏览器,尤其是IE6。IE6是不直接支持$("#idName").submit();这种方式的。

服务端如下,还得返回一个值,直接submit是无法返回值的

public void Upload() 
{ 
  HttpPostedBase ff=Request.Files["document"];//这里是获取上传的文件流,也可以用索引值来表示如果是多个文件的话 
  string fileName=System.DateTime.Now+ff.FileName.ToString();  //这里取出来的文件名是没有后缀的,所以要保存的话还需要取出文件拓展名。这里就不写过细,只是为描述这样一个思路。 
  try 
  { 
    SaveAs(documentPath+fileName+extendtionName); 
    Response.Write("<script type='text/javascript' type='language'>parent.window.callBackMethod('上传成功');</scrpt>"); 
  } 
  catch 
  { 
    Response.Write("<script type='text/javascript' type='language'>parent.window.callBackMethod('上传失败');</scrpt>"); //parent.window.methodName();这个是JS调用父页的方法。因为现在模拟一个iframe上传文件,这个iframe的作用就是一个中间站的作用。在父页点击上传后通过target会将页面文档流传入iframe中再上传服务端作处理。服务端有响应之后然后再在iframe里面显示出来,而不是直接在父页面显示出结果。这里可能就是一个alert()弹出一个对话框提示一下,如果是这样那么不调父页方法也行。如果想把这提示的内容丰富一点比如弹出个类似人人网的蓝色的对话框之类的。 
   } 
}

模拟iframe其实是页面局部更新,但是页面中的这个iframe没有内容而且还是不显示的,所以它刷新了完全不会影响到整个页面。

以上这篇仿iframe效果Aajx文件上传实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
File, FileReader 和 Ajax 文件上传实例分析(php)
Apr 27 Javascript
Jquery实现带动画效果的经典二级导航菜单
Mar 22 Javascript
js delete 用法(删除对象属性及变量)
Aug 24 Javascript
如何利用模板将HTML从JavaScript中抽离
Oct 08 Javascript
javascript入门之string对象【新手必看】
Nov 22 Javascript
jQuery模拟下拉框选择对应菜单的内容
Mar 07 Javascript
jQuery实现鼠标经过显示动画边框特效
Mar 24 jQuery
js+html5实现手机九宫格密码解锁功能
Jul 30 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
Three.js实现简单3D房间布局
Dec 30 Javascript
Vue动态面包屑功能的实现方法
Jul 01 Javascript
jQuery列表动态增加和删除的实现方法
Nov 05 jQuery
JavaScript之cookie技术详解
Nov 18 #Javascript
js前端解决跨域问题的8种方案(最新最全)
Nov 18 #Javascript
js前端实现多图图片上传预览的两个方法(推荐)
Nov 18 #Javascript
js实时获取窗口大小变化的实例代码
Nov 18 #Javascript
Kendo Grid editing 自定义验证报错提示的解决方法
Nov 18 #Javascript
整理一下常见的IE错误
Nov 18 #Javascript
require、backbone等重构手机图片查看器
Nov 17 #Javascript
You might like
饭制《星际争霸》Mod:优化游戏机制 增加新单位
2017/07/02 星际争霸
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
php生成rss类用法实例
2015/04/14 PHP
PHP异常处理浅析
2015/05/12 PHP
php中的登陆login实例代码
2016/06/20 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
2019/10/17 PHP
javascript代码加载优化方法
2011/01/30 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
基于jQuery实现文本框只能输入数字(小数、整数)
2016/01/14 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
如何使用vuejs实现更好的Form validation?
2017/04/07 Javascript
Vue 框架之动态绑定 css 样式实例分析
2018/11/14 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
ES6 Promise对象概念及用法实例详解
2019/10/15 Javascript
[54:47]Liquid vs VP Supermajor决赛 BO 第五场 6.10
2018/07/05 DOTA
[01:20:30]OG vs LGD 2018国际邀请赛淘汰赛BO3 第四场 8.26
2018/08/30 DOTA
Python实现的简单发送邮件脚本分享
2014/11/07 Python
详细解读Python的web.py框架下的application.py模块
2015/05/02 Python
django admin 后台实现三级联动的示例代码
2018/06/22 Python
Python列表切片常用操作实例解析
2019/12/16 Python
Python爬虫抓取论坛关键字过程解析
2020/10/19 Python
HTML5中的Web Notification桌面通知功能的实现方法
2019/07/29 HTML / CSS
解释一下抽象方法和抽象类
2016/08/27 面试题
一套软件测试笔试题
2014/07/25 面试题
学生处主任岗位职责
2013/12/01 职场文书
生产厂厂长岗位职责
2013/12/25 职场文书
学校安全检查制度
2014/01/27 职场文书
车辆工程专业求职信
2014/06/14 职场文书
奥林匹克运动会口号
2014/06/19 职场文书
村主任“四风”问题个人对照检查材料思想汇报
2014/10/02 职场文书
焦裕禄观后感
2015/06/03 职场文书
班委竞选稿范文
2015/11/21 职场文书
工作总结之小学教师体育工作范文(3篇)
2019/10/07 职场文书