仿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 相关文章推荐
javascript 操作文件 实现方法小结
Jul 02 Javascript
Jquery操作Select 简单方便 一个js插件搞定
Nov 12 Javascript
firefox firebug中文入门教程 脚本之家新年特别版
Jan 02 Javascript
javascript移出节点removeChild()使用介绍
Apr 03 Javascript
EasyUI实现第二层弹出框的方法
Mar 01 Javascript
详解AngularJs路由之Ui-router-resolve(预加载)
Jun 13 Javascript
基于es6三点运算符的使用方法(实例讲解)
Oct 12 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
Nov 17 Javascript
在博客园博文中添加自定义右键菜单的方法详解
Feb 05 Javascript
微信小程序实现弹框效果
May 26 Javascript
JavaScript实现网页动态生成表格
Nov 25 Javascript
js 执行上下文和作用域的相关总结
Feb 08 Javascript
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
php生成WAP页面
2006/10/09 PHP
PHP 用数组降低程序的时间复杂度
2009/12/04 PHP
《PHP编程最快明白》第七讲:php图片验证码与缩略图
2010/11/01 PHP
PHP Curl多线程原理实例详解
2013/11/06 PHP
使用ob系列函数实现PHP网站页面静态化
2014/08/13 PHP
PHP使用header()输出图片缓存实例
2014/12/09 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP7扩展开发之基于函数方式使用lib库的方法详解
2018/01/15 PHP
js传值 判断
2006/10/26 Javascript
csdn 批量接受好友邀请
2009/02/19 Javascript
幻灯片带网页设计中的20个奇妙应用示例小结
2012/05/27 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
2014/01/02 Javascript
jquery根据锚点offset值实现动画切换
2014/09/11 Javascript
JS实现可调整倒计时间代码分享
2015/08/18 Javascript
js调用webservice构造SOAP进行身份验证
2016/04/27 Javascript
JavaScript对象创建模式实例汇总
2016/10/03 Javascript
如何在 Vue.js 中使用第三方js库
2017/04/25 Javascript
JS奇技之利用scroll来监听resize详解
2017/06/15 Javascript
bootstrap daterangepicker汉化以及扩展功能
2017/06/15 Javascript
webpack实用小功能介绍
2018/01/02 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
Python创建xml的方法
2015/03/10 Python
在Django中创建动态视图的教程
2015/07/15 Python
python微信公众号之关注公众号自动回复
2018/10/25 Python
python的schedule定时任务模块二次封装方法
2019/02/19 Python
Python实现直方图均衡基本原理解析
2019/08/08 Python
Python绘制热力图示例
2019/09/27 Python
美国首屈一指的高品质珠宝设计师和零售商:Allurez
2018/01/23 全球购物
SkinCeuticals官网:美国药妆品牌
2018/04/19 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
长安大学毕业生自我鉴定
2014/01/17 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
应届毕业生求职信
2014/05/26 职场文书
vue+elementUI实现表格列的显示与隐藏
2022/04/13 Vue.js