文件上传,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 编程笔记 无名函数
Jun 28 Javascript
js动画(animate)简单引擎代码示例
Dec 04 Javascript
javascript时间自动刷新实现原理与步骤
Jan 06 Javascript
jQuery插件slides实现无缝轮播图特效
Apr 17 Javascript
JavaScript实现列表分页功能特效
May 15 Javascript
浅谈javascript中return语句
Jul 15 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
Dec 26 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
Javascript中关于Array.filter()的妙用详解
Dec 04 Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 Javascript
如何使用pm2快速将项目部署到远程服务器
Mar 12 Javascript
React 并发功能体验(前端的并发模式)
Jul 01 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
php5中date()得出的时间为什么不是当前时间的解决方法
2008/06/30 PHP
MySQL的FIND_IN_SET函数使用方法分享
2012/03/27 PHP
WordPress中注册菜单与调用菜单的方法详解
2015/12/18 PHP
Yii使用smsto短信接口的函数demo示例
2016/07/13 PHP
Javascript 继承机制的实现
2009/08/12 Javascript
JQuery 获取json数据$.getJSON方法的实例代码
2013/08/02 Javascript
javascript自定义startWith()和endWith()的两种方法
2013/11/11 Javascript
获得Javascript对象属性个数的示例代码
2013/11/21 Javascript
jQuery实用技巧必备(下)
2015/11/03 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
javascript之with的使用(阿里云、淘宝使用代码分析)
2016/10/11 Javascript
Vue概念及常见命令介绍(1)
2016/12/08 Javascript
JS小数转换为整数的方法分析
2017/01/07 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
详解Angular Reactive Form 表单验证
2017/07/06 Javascript
node结合swig渲染摸板的方法
2018/04/11 Javascript
angularjs的单选框+ng-repeat的实现方法
2018/09/12 Javascript
微信小程序向Java后台传输参数的方法实现
2020/12/10 Javascript
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python使用点操作符访问字典(dict)数据的方法
2015/03/16 Python
Python用Try语句捕获异常的实例方法
2019/06/26 Python
Keras 实现加载预训练模型并冻结网络的层
2020/06/15 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
Python爬虫代理池搭建的方法步骤
2020/09/28 Python
python xlsxwriter模块的使用
2020/12/24 Python
python自动化发送邮件实例讲解
2021/01/04 Python
HTML5中的Article和Section元素认识及使用
2013/03/22 HTML / CSS
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
Under Armour安德玛意大利官网:美国高端运动科技品牌
2020/01/16 全球购物
师德自我剖析材料范文
2014/10/06 职场文书
2014年小学图书室工作总结
2014/12/09 职场文书
保研导师推荐信
2015/03/25 职场文书
行政前台岗位职责
2015/04/16 职场文书
微信小程序实现录音Record功能
2021/05/09 Javascript
MongoDB安装使用并实现Python操作数据库
2021/06/28 MongoDB
vscode内网访问服务器的方法
2022/06/28 Servers