文件上传,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 相关文章推荐
非常漂亮的JS代码经典广告
Oct 21 Javascript
传智播客学习之java 反射
Nov 22 Javascript
js substr支持中文截取函数代码(中文是双字节)
Apr 17 Javascript
如何动态加载外部Javascript文件
Dec 02 Javascript
浅谈Sublime Text 3运行JavaScript控制台
Jun 06 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
Apr 10 jQuery
vue-cli 默认路由再子路由选中下的选中状态问题及解决代码
Sep 06 Javascript
vue.draggable实现表格拖拽排序效果
Dec 01 Javascript
小程序分页实践之编写可复用分页组件
Jul 18 Javascript
基于js实现复制内容到操作系统粘贴板过程解析
Oct 11 Javascript
es6函数中的作用域实例分析
Apr 18 Javascript
JS中循环遍历数组的四种方式总结
Jan 23 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和MySql中32位和64位的整形范围是多少
2016/02/18 PHP
PHP实现的数组和XML文件相互转换功能示例
2018/03/15 PHP
css动画效果之animation的常用样式
2021/03/09 HTML / CSS
js获取RadioButtonList的Value/Text及选中值等信息实现代码
2013/03/05 Javascript
js中小数转换整数的方法
2014/01/26 Javascript
jquery退出each循环的写法
2014/02/26 Javascript
Seajs的学习笔记
2014/03/04 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
jquery表单验证需要做些什么
2015/11/17 Javascript
基于jQuey实现鼠标滑过变色(整行变色)
2015/12/07 Javascript
利用JQuery写一个简单的异步分页插件
2016/03/07 Javascript
jquery表单插件Autotab使用方法详解
2016/06/24 Javascript
Angular2 (RC5) 路由与导航详解
2016/09/21 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
微信小程序之ES6与事项助手的功能实现
2016/11/30 Javascript
JS中使用gulp实现压缩文件及浏览器热加载功能
2017/07/12 Javascript
对于input 框限定输入值为浮点型的js代码
2017/09/25 Javascript
AngularJS 表单验证手机号的实例(非必填)
2017/11/12 Javascript
Vue实现点击后文字变色切换方法
2018/02/11 Javascript
详解如何创建并发布一个 vue 组件
2018/11/08 Javascript
jQuery实现弹幕特效
2019/11/29 jQuery
vue+element实现图片上传及裁剪功能
2020/06/29 Javascript
python定时采集摄像头图像上传ftp服务器功能实现
2013/12/23 Python
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
Unicode和Python的中文处理
2017/03/19 Python
django 单表操作实例详解
2019/07/30 Python
将matplotlib绘图嵌入pyqt的方法示例
2020/01/08 Python
在PyCharm中实现添加快捷模块
2020/02/12 Python
毕业生自荐信
2013/12/14 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
股东授权委托书
2014/10/15 职场文书
红高粱观后感
2015/06/10 职场文书
2015年大学组织委员个人工作总结
2015/10/23 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
Java基础-封装和继承
2021/07/02 Java/Android
恶魔之树最顶端的三颗果实 震震果实上榜,第一可以制造岩浆
2022/03/18 日漫