仿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 相关文章推荐
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
JQuery中each()的使用方法说明
Aug 19 Javascript
ASP中Sub和Function的区别说明
Aug 30 Javascript
使用Mootools动态添加Css样式表代码,兼容各浏览器
Dec 12 Javascript
jquery动态增加text元素以及删除文本内容实例代码
Jul 01 Javascript
onkeyup,onkeydown和onkeypress的区别介绍
Oct 21 Javascript
JavaScript 正则表达式中global模式的特性
Feb 25 Javascript
基于JS实现移动端访问PC端页面时跳转到对应的移动端网页
Dec 24 Javascript
几种tab切换详解
Feb 03 Javascript
在vue中使用Autoprefixed的方法
Jul 27 Javascript
jQuery实现模拟搜索引擎的智能提示功能简单示例
Jan 27 jQuery
javascript写一个ajax自动拦截并下载数据代码实例
Sep 07 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
判断控件是否已加载完成的代码
2010/02/24 Javascript
jQuery基本过滤选择器使用介绍
2013/04/18 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
js为空或不是对象问题的快速解决方法
2013/12/11 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
javascript操作数组详解
2014/12/17 Javascript
详解AngularJS中自定义指令的使用
2015/06/17 Javascript
JavaScript动态添加css样式和script标签
2016/07/19 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
Windows下快速搭建NodeJS本地服务器的步骤
2017/08/09 NodeJs
详解tween.js 中文使用指南
2018/01/05 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
vue-router 前端路由之路由传值的方式详解
2019/04/30 Javascript
nodejs二进制与Buffer的介绍与使用
2019/07/11 NodeJs
vue2路由方式--嵌套路由实现方法分析
2020/03/06 Javascript
Python实现高效求解素数代码实例
2015/06/30 Python
Java与Python两大幸存者谁更胜一筹呢
2018/04/12 Python
PyQt5每天必学之单行文本框
2018/04/19 Python
Python查找第n个子串的技巧分享
2018/06/27 Python
python实现flappy bird小游戏
2018/12/24 Python
Python3实现的回文数判断及罗马数字转整数算法示例
2019/03/27 Python
Python列表去重复项的N种方法(实例代码)
2020/05/12 Python
如何基于Python pygame实现动画跑马灯
2020/11/18 Python
打印机墨盒:123Inkjets
2017/02/16 全球购物
英国日常交易网站:Wowcher
2018/09/04 全球购物
写自荐信三大法宝
2014/01/24 职场文书
《小小竹排画中游》教学反思
2014/02/26 职场文书
乡镇三项教育实施方案
2014/03/30 职场文书
理发店策划方案
2014/06/05 职场文书
父亲节活动策划方案
2014/08/24 职场文书
2015年网管个人工作总结
2015/05/22 职场文书
活着观后感
2015/06/03 职场文书
运动会宣传稿100字
2015/07/23 职场文书