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

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

最后只好模拟iframe来实现。发现相当的简单。

<iframe name="ajaxUpload" style="display:none"></iframe>

<form name="from1" id="from1" method="post" action="url" enctype="multipart/form-data" target="ajaxUpload">     这里是重点。要上传文件enctype这个属性不可少,target的值改为iframe的name的值。

<table>

<tr>

<td>附件:</td>

<td><input type="file" id="document" name="document"/></td>

</tr>

</table>

</form>

上面是HTML

下面写一下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& gt;");

}

catch

{

Response.Write("<script type='text/javascript' type='language'>parent.window.callBackMethod('上传失败');</scrpt& gt;"); //parent.window.methodName();这个是JS调用父页的方法。因为现在模拟一个iframe上传文件,这个iframe的作 用就是一个中间站的作用。在父页点击上传后通过target会将页面文档流传入iframe中再上传服务端作处理。服务端有响应之后然后再在iframe 里面显示出来,而不是直接在父页面显示出结果。这里可能就是一个alert()弹出一个对话框提示一下,如果是这样那么不调父页方法也行。如果想把这提示 的内容丰富一点比如弹出个类似人人网的蓝色的对话框之类的。

}

}

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

转载于:https://www.cnblogs.com/jizonghai/archive/2013/01/09/2853170.html

页面无刷新ajax上传文件--模拟iframe,超简单相关推荐

  1. JQUERY AJAX无刷新异步上传文件

    AJAX无刷新上传文件并显示 http://blog.csdn.net/gao3705512/article/details/9330637?utm_source=tuicool jQuery For ...

  2. php jquery ajax裁剪图照片,php+jquery+ajax无刷新图片上传裁切,模拟flash头像上传实例...

    这几天自己在写一个cms.之前在用到图片上传裁切的时候总是用的flash的,或者是swfupload之类的.用的还不熟练,所以今天就用ajax做一个图片上传裁切的实例.个人感觉还不错,现在就分享出来. ...

  3. php flash 图片上传,php+jquery+ajax无刷新图片上传裁切,模拟flash头像上传实例

    这几天自己在写一个cms.之前在用到图片上传裁切的时候总是用的flash的,或者是swfupload之类的.用的还不熟练,所以今天就用ajax做一个图片上传裁切的实例.个人感觉还不错,现在就分享出来. ...

  4. html5拖拽图片批量ajax无刷新进度上传

    1.前端拖拽图片 之前有篇文章说到HTML5的拖拽(drag.drop,详见:/post/jquery-plugin-1-jquery-drag-and-html5-draggable-api-and ...

  5. php+ajax上传文件

    直接上源代码 html页面 <!DOCTYPE html> <html> <head> <meta charset="UTF-8" > ...

  6. jquery form插件(ajax)上传文件实现及原理

    原理: jquery form插件ajax上传文件的原理, 1.浏览器实现了XMLHttpRequest level2规范的,则插件使用xhr直接提交文件.通常来说chrome.firefox都实现了 ...

  7. ajax轮询 xml,闲话ajax,例ajax轮询,ajax上传文件

    引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放 ...

  8. 上传html 0字节,HTML ajax 上传文件限制文件的类型和文件大小

    html js function getFileType(filePath){ //获取文件的后缀名 var startIndex = filePath.lastIndexOf(".&quo ...

  9. ajax传图片以及后台接收,前端ajax上传文件,图片,后端nodejs接收文件;

    前端ajax上传文件,图片,后端nodejs接收文件: 学习了nodejs,就想实现一下有进度条的文件上传,html 在作这个功能的时候遇到的问题前端 用普通的ajax没法实现文件上传,只能post, ...

最新文章

  1. 网页学名为html文件,什么是HTML
  2. linux 用户java_linux之用户管理
  3. 美国研发出百万兆级计算机 Summit,“最强超算”竞争加剧
  4. 【 Sublime Text 】如何将Sublime Text与Vivado 2018.3关联?
  5. C++(八)——文件操作
  6. 盖茨发文谈如何实现零碳目标 称看好电动车未来
  7. HDU 1506 Largest Rectangle in a Histogram(dp、单调栈)
  8. SAP CRM里Interaction Object是个什么东东
  9. 前端学习(2966):上午回顾
  10. ssh-scan处理手记
  11. 计算机等级考试初级网络工程师,2019年全国计算机等级考试网络工程师四级,需..._网络编辑_帮考网...
  12. linux tempfile指令学习
  13. Java9 jar兼容_java9新特性-6-多版本兼容jar包
  14. 【转】SSL/TLS协议运行机制的概述
  15. Docker 快速学习(一)
  16. java支付系统,三方支付系统,四方支付系统
  17. python房价数据分析波士顿_Python编程数据科学入门 - 波士顿房价数据分析
  18. linux系统安装systemback,使用systemback制作Ubuntu自定义系统镜像和系统备份(抄)...
  19. cairo填充_Cairo图形指南
  20. 空调老大易主后,格力能否下定决心多元化?

热门文章

  1. 最详细的phpmailer的使用方法
  2. 深入跨域问题(2) - 利用 CORS 解决跨域
  3. ubuntu将mysql、nginx添加到环境变量中
  4. 写给 Android 应用工程师的 Binder 原理剖析
  5. server 2008 R2 使用笔记
  6. Windows下使用Telnet 命令测试端口号
  7. mysql保留2位小数字段如何设置 浮点数
  8. eclipse+MapReduce
  9. IDEA创建Web Project图解
  10. Ollydbg 常用快捷键