仿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入门教程(9) Document文档对象
Jan 31 Javascript
javascript 浏览器判断 绑定事件 arguments 转换数组 数组遍历
Jul 06 Javascript
jQuery JSON的解析方式分享
Apr 05 Javascript
js操作label给label赋值及取label的值示例
Nov 07 Javascript
JS简单实现文件上传实例代码(无需插件)
Nov 15 Javascript
JavaScript使ifram跨域相互访问及与PHP通信的实例
Mar 03 Javascript
JS操作JSON方法总结(推荐)
Jun 14 Javascript
JS获取当前页面名称的简单实例
Aug 19 Javascript
js 中获取制定的cook信息实现方法
Nov 19 Javascript
Vue中的v-for指令不起效果的解决方法
Sep 27 Javascript
vue + element-ui的分页问题实现
Dec 17 Javascript
vuex 解决报错this.$store.commit is not a function的方法
Dec 17 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的配置文件php.ini
2006/10/09 PHP
php读取纯真ip数据库使用示例
2014/01/26 PHP
JavaScript触发器详解
2007/03/10 Javascript
JQuery 图片延迟加载并等比缩放插件
2009/11/09 Javascript
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
extjs_02_grid显示本地数据、显示跨域数据
2014/06/23 Javascript
js读写json文件实例代码
2014/10/21 Javascript
JavaScript中Number.NEGATIVE_INFINITY值的使用详解
2015/06/05 Javascript
JavaScript匿名函数之模仿块级作用域
2015/12/12 Javascript
jQuery展示表格点击变色、全选、删除
2017/01/05 Javascript
JavaScript基于Dom操作实现查找、修改HTML元素的内容及属性的方法
2017/01/20 Javascript
微信小程序 详解页面跳转与返回并回传数据
2017/02/13 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
vue之浏览器存储方法封装实例
2018/03/15 Javascript
JS复杂判断的更优雅写法代码详解
2018/11/07 Javascript
原生js实现二级联动菜单
2019/11/27 Javascript
Python中的zipfile模块使用详解
2015/06/25 Python
在Apache服务器上同时运行多个Django程序的方法
2015/07/22 Python
简介Python的collections模块中defaultdict类型的用法
2016/07/07 Python
python面向对象_详谈类的继承与方法的重载
2017/06/07 Python
利用python修改json文件的value方法
2018/12/31 Python
使用Python-OpenCV向图片添加噪声的实现(高斯噪声、椒盐噪声)
2019/05/28 Python
Python中遍历列表的方法总结
2019/06/27 Python
Python3.6 + TensorFlow 安装配置图文教程(Windows 64 bit)
2020/02/24 Python
Python执行时间的几种计算方法
2020/07/31 Python
OpenCV实现机器人对物体进行移动跟随的方法实例
2020/11/09 Python
适合各种场合的美食礼品:Harry & David
2016/08/03 全球购物
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
购买大码女装:Lane Bryant
2016/09/07 全球购物
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
员工工作能力评语
2014/12/31 职场文书
导游带团欢迎词
2015/09/30 职场文书
python 如何做一个识别率百分百的OCR
2021/05/29 Python
一文弄懂MySQL中redo log与binlog的区别
2022/02/15 MySQL
对讲机的最大通讯距离是多少
2022/02/18 无线电