文件上传,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 相关文章推荐
2007/12/23更新创意无限,简单实用(javascript log)
Dec 24 Javascript
Javascript 赋值机制详解
Nov 23 Javascript
JavaScript实现动画打开半透明提示层的方法
Apr 21 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
Jun 01 Javascript
js实现随屏幕滚动的带缓冲效果的右下角广告代码
Sep 04 Javascript
网页从弹窗页面单选框传值至父页面代码分享
Sep 29 Javascript
原生ajax处理json格式数据的实例代码
Dec 25 Javascript
开源免费天气预报接口API及全国所有地区代码(国家气象局提供)
Dec 26 Javascript
javascript 判断当前浏览器版本并判断ie版本
Feb 17 Javascript
JavaScript组件开发之输入框加候选框
Mar 10 Javascript
微信小程序 首页制作简单实例
Apr 07 Javascript
React教程之Props验证的具体用法(Props Validation)
Sep 04 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
与文件上传有关的php配置参数总结
2013/06/14 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
PHP将字符串首字母大小写转换的实例
2017/01/21 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
Yii2第三方类库插件Imagine的安装和使用
2017/07/06 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
jQuery Tab插件 用于在Tab中显示iframe,附源码和详细说明
2011/06/27 Javascript
JavaScript获取XML数据附示例截图
2014/03/05 Javascript
jquery手风琴特效插件
2015/02/04 Javascript
JS实现转动随机数抽奖特效代码
2020/04/16 Javascript
jQuery超赞的评分插件(8款)
2015/08/20 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
理解javascript定时器中的单线程
2016/02/23 Javascript
jQuery基于toggle实现click触发DIV的显示与隐藏问题分析
2016/06/12 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
React实现点击删除列表中对应项
2017/01/10 Javascript
原生js实现简单的链式操作
2017/07/04 Javascript
Node.js实现mysql连接池使用事务自动回收连接的方法示例
2018/02/03 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
p5.js临摹旋转爱心
2019/10/23 Javascript
vue中 数字相加为字串转化为数值的例子
2019/11/07 Javascript
Python中str.format()详解
2017/03/12 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
详解Python locals()的陷阱
2019/03/26 Python
将Pytorch模型从CPU转换成GPU的实现方法
2019/08/19 Python
tesserocr与pytesseract模块的使用方法解析
2019/08/30 Python
Python中生成一个指定长度的随机字符串实现示例
2019/11/06 Python
python批量处理txt文件的实例代码
2020/01/13 Python
Python内建序列通用操作6种实现方法
2020/03/26 Python
解析Python 偏函数用法全方位实现
2020/06/26 Python
祖国在我心中演讲稿500字
2014/05/04 职场文书
2014红色之旅心得体会
2014/10/07 职场文书
毕业生个人自荐书
2015/03/05 职场文书
学生病假条怎么写
2015/08/17 职场文书
学校2016年九九重阳节活动总结
2016/04/01 职场文书