仿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 相关文章推荐
jquery实现类似EasyUI的页面布局可改变左右的宽度
Sep 12 Javascript
JS和JQ的event对象区别分析
Nov 24 Javascript
JavaScript创建对象的方式小结(4种方式)
Dec 17 Javascript
javascript实现图片轮播效果
Jan 20 Javascript
JavaScript面向对象程序设计教程
Mar 29 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
Dec 14 Javascript
浅谈vue-cli 3.0.x 初体验
Apr 11 Javascript
Vue 页面跳转不用router-link的实现代码
Apr 12 Javascript
Vue项目中跨域问题解决方案
Jun 05 Javascript
浅谈Vue路由快照实现思路及其问题
Jun 07 Javascript
详解ES6中的 Set Map 数据结构学习总结
Nov 06 Javascript
vue实现移动端悬浮窗效果
Dec 01 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
一些星际专用术语解释
2020/03/04 星际争霸
php+iframe实现隐藏无刷新上传文件
2012/02/10 PHP
ThinkPHP框架实现session跨域问题的解决方法
2014/07/01 PHP
Thinkphp的volist标签嵌套循环使用教程
2014/07/08 PHP
PHP开发注意事项总结
2015/02/04 PHP
使用PHP编写发红包程序
2015/07/22 PHP
PHP缩略图生成和图片水印制作
2017/01/07 PHP
yii框架使用分页的方法分析
2019/07/25 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
JS 控制非法字符的输入代码
2009/12/04 Javascript
javascript随机抽取0-100之间不重复的10个数
2016/02/25 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
JavaScript正则表达式和级联效果
2017/09/14 Javascript
React Native 搭建开发环境的方法步骤
2017/10/30 Javascript
解决Webpack 热部署检测不到文件变化的问题
2018/02/22 Javascript
swiper 解决动态加载数据滑动失效的问题
2018/02/26 Javascript
vue移动UI框架滑动加载数据的方法
2018/03/12 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
js中实例与对象的区别讲解
2019/01/21 Javascript
自定义Vue中的v-module双向绑定的实现
2019/04/17 Javascript
Node.js API详解之 net模块实例分析
2020/05/18 Javascript
Sublime Text3 配置 NodeJs 环境的方法
2020/05/20 NodeJs
vue实现单一筛选、删除筛选条件
2020/10/26 Javascript
[03:57]《不朽》——2015DOTA2国际邀请赛—中国军团出征主题曲MV
2015/07/15 DOTA
轻松掌握python设计模式之访问者模式
2016/11/18 Python
Python基于Socket实现的简单聊天程序示例
2017/08/05 Python
django项目运行因中文而乱码报错的几种情况解决
2017/11/07 Python
python 使用shutil复制图片的例子
2019/12/13 Python
Python使用Excel将数据写入多个sheet
2020/05/16 Python
PyCharm设置注释字体颜色以及是否倾斜的操作
2020/09/16 Python
《玩具柜台前的孩子》教学反思
2014/02/13 职场文书
交通安全寄语大全
2014/04/08 职场文书
2014年社团工作总结范文
2014/11/27 职场文书
仰望星空观后感
2015/06/10 职场文书
食品安全主题班会
2015/08/13 职场文书
Python的property属性详细讲解
2022/04/11 Python