文件上传,iframe跨域数据提交的实现


Posted in Javascript onNovember 18, 2016

1、文件上传,图片上传,第三方uploadify插件,http://www.uploadify.com/about/

2、用iframe上传文件,提交表单,主要思路就是:

 a、js创建form表单,iframe,添加到body里,form的target要和iframe的name一致。

 b、form表单里更新数据,submit提交

 c、如果上传文件,图片,form里面添加 input-file 元素,绑定onchange事件,js触发,在onchange里面添加submit事件

 d、关于回调:iframe提交成功后,返回的数据在iframe子页面的里面,可以这样获取,需要拆分:

$iframe[0].contentWindow.document.querySelector('body').innerHTML

代码片:

 

var target = 'frameFile';
var input = '<input type="file" name="file" onchange="changeImage()">' +
  '<input name="appId" value="'+id+'">' +
  '<input type="submit" name="submit" value="submit">';
var $form = $('<form action="'+ url +'" target="'+ target +'" enctype="multipart/form-data" method="post" id="upImageForm" style="display:none">'+input+'</form>').appendTo('body');
var $iframe = $('<iframe name="'+ target +'" style="display:none"></iframe>').appendTo('body');
$form.find('input').eq(0).click();
window.changeImage = function(){
  $form.find('input').eq(-1).click();
};

//检测iframe页面load
$iframe.load(function(e){
  var str = $iframe[0].contentWindow.document.querySelector('body').innerHTML;
  var data = spt(str);
  $form.remove();
  $iframe.remove();
  callback(data);
});
function spt(str){
  //字符串拆成对象
  var a = str.indexOf('{');
  var b = str.indexOf('}');
  var j = {};
  var t = [];
  var s = str.substring(a+1,b);
  s = s.replace(/"/gi,'');
  t = s.split(',');
  for(var i=0; i<t.length; i++ ){
    var tmp = t[i].split(':');
    j[tmp[0]] = tmp[1];
  };
  return j;
};

 2-c修正,以上代码有bug:

手动触发input-file的onchange事件,在事件里面submit,这做法有问题。因为触发onchange事件,选择才开始,submit就已经提交了。

上传功能,form表单元素只能放到html里。

以上这篇文件上传,iframe跨域数据提交的实现就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
兼容多浏览器的iframe自适应高度(ie8 、谷歌浏览器4.0和 firefox3.5.3)
Nov 04 Javascript
用C/C++来实现 Node.js 的模块(一)
Sep 24 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
Mar 02 Javascript
jquery.map()方法的使用详解
Jul 09 Javascript
原生js的数组除重复简单实例
May 24 Javascript
jQuery实现的导航下拉菜单效果示例
Sep 05 Javascript
javascript实现一个网页加载进度loading
Jan 04 Javascript
微信小程序 WebSocket详解及应用
Jan 21 Javascript
JS实现直接运行html代码的方法
Mar 13 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
vue 使用鼠标滚动加载数据的例子
Oct 31 Javascript
详细分析Node.js 模块系统
Jun 28 Javascript
jQuery实现自动调用和触发某个事件的方法
Nov 18 #Javascript
jQuery与JavaScript节点创建方法的对比
Nov 18 #Javascript
用iframe实现不刷新整个页面上传图片的实例
Nov 18 #Javascript
Form表单按回车自动提交表单的实现方法
Nov 18 #Javascript
form+iframe解决跨域上传文件的方法
Nov 18 #Javascript
jQuery ajax 当async为false时解决同步操作失败的问题
Nov 18 #Javascript
微信小程序开发实战教程之手势解锁
Nov 18 #Javascript
You might like
杏林同学录(三)
2006/10/09 PHP
PHP操作数组的一些函数整理介绍
2011/07/17 PHP
匹配csdn用户数据库与官方用户的重合度并将重叠部分的用户筛选出来
2011/12/25 PHP
关于php 高并发解决的一点思路
2017/04/16 PHP
浅谈Javascript面向对象编程
2011/11/15 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
2013/02/02 Javascript
JQuery中使用ajax传输超大数据的解决方法
2014/07/14 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
jQuery实现友好的轮播图片特效
2015/01/12 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
js制作可以延时消失的菜单
2017/01/13 Javascript
angular forEach方法遍历源码解读
2017/01/25 Javascript
js上下视差滚动简单实现代码
2017/03/07 Javascript
js实现按座位号抽奖
2017/04/05 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
详解自定义ajax支持跨域组件封装
2018/02/08 Javascript
详解vue 不同环境配置不同的打包命令
2019/04/07 Javascript
Vue 2.0 中依赖注入 provide/inject组合实战
2019/06/20 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
python调用windows api锁定计算机示例
2014/04/17 Python
python基础教程之循环介绍
2014/08/29 Python
python selenium firefox使用详解
2019/02/26 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
医院后勤自我鉴定
2013/10/13 职场文书
幼儿园母亲节活动方案
2014/03/10 职场文书
幸福家庭标语
2014/06/27 职场文书
党员学习正风肃纪思想汇报
2014/09/12 职场文书
2014年党员自我评议(5篇)
2014/09/12 职场文书
2015年团支部年度工作总结
2015/05/27 职场文书
2016高考冲刺决心书
2015/09/23 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
手写实现JS中的new
2021/11/07 Javascript