文件上传,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 相关文章推荐
javascript下对于事件、事件流、事件触发的顺序随便说说
Jul 17 Javascript
原生javascript实现图片轮播效果代码
Sep 03 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
JQuery右键菜单插件ContextMenu使用指南
Dec 19 Javascript
原生JS实现简单放大镜效果
Feb 08 Javascript
js和jquery中获取非行间样式
May 05 jQuery
vue router动态路由下让每个子路由都是独立组件的解决方案
Apr 24 Javascript
vue+springmvc导出excel数据的实现代码
Jun 27 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
Aug 10 Javascript
angular将html代码输出为内容的实例
Sep 30 Javascript
详解IOS微信上Vue单页面应用JSSDK签名失败解决方案
Nov 14 Javascript
Vue自定义属性实例分析
Feb 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实现无限级分类实现代码(递归方法)
2011/01/01 PHP
javascript 定义新对象方法
2010/02/20 Javascript
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
JQuery-tableDnD 拖拽的基本使用介绍
2013/07/04 Javascript
jquery easyui combobox模糊过滤(示例代码)
2013/11/30 Javascript
javascript 数字格式化输出的实现代码
2013/12/10 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
JavaScript 基本概念
2015/01/20 Javascript
轻松实现javascript数据双向绑定
2015/11/11 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
2016/05/19 Javascript
JavaScript的setter与getter方法
2017/11/29 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
angularJs利用$scope处理升降序的方法
2018/10/08 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
编写v-for循环的技巧汇总
2020/12/01 Javascript
Python版微信红包分配算法
2015/05/04 Python
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
Python基于Tkinter的HelloWorld入门实例
2015/06/17 Python
Python对字符串实现去重操作的方法示例
2017/08/11 Python
python中获得当前目录和上级目录的实现方法
2017/10/12 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
计算机二级python学习教程(2) python语言基本语法元素
2019/05/16 Python
python3 webp转gif格式的实现示例
2019/12/10 Python
Python TCPServer 多线程多客户端通信的实现
2019/12/31 Python
使用python库xlsxwriter库来输出各种xlsx文件的示例
2020/09/01 Python
详解Django自定义图片和文件上传路径(upload_to)的2种方式
2020/12/01 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
Guess荷兰官网:美国服饰品牌
2020/01/22 全球购物
大学生专业个人学习的自我评价
2013/10/26 职场文书
本科生求职信
2014/06/17 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
秋季校运会广播稿100字
2014/09/18 职场文书
村干部群众路线教育活动对照检查材料
2014/10/01 职场文书
SqlServer数据库远程连接案例教程
2021/07/15 SQL Server
JavaCV实现照片马赛克效果
2022/01/22 Java/Android