文件上传,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 相关文章推荐
禁止IE用右键的JS代码
Dec 30 Javascript
关于JS中的方法是否加括号的问题
Jul 27 Javascript
ionic隐藏tabs的方法
Aug 29 Javascript
jquery获取点击控件的绝对位置简单实例
Oct 13 Javascript
JavaScript设计模式之单例模式详解
Jun 09 Javascript
sublime text配置node.js调试(图文教程)
Nov 23 Javascript
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
微信小程序实现滑动切换自定义页码的方法分析
Dec 29 Javascript
webpack file-loader和url-loader的区别
Jan 15 Javascript
JS中注入eval, Function等系统函数截获动态代码
Apr 03 Javascript
vue实现图片按比例缩放问题操作
Aug 11 Javascript
游戏开发中如何使用CocosCreator进行音效处理
Apr 14 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
肝肠寸断了解下!盘点史上最伤心的十大动漫
2020/03/04 日漫
腾讯QQ php程序员面试题目整理
2010/06/08 PHP
延长phpmyadmin登录时间的方法
2011/02/06 PHP
php中使用Curl、socket、file_get_contents三种方法POST提交数据
2011/08/12 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
PHP+MySQL统计该库中每个表的记录数并按递减顺序排列的方法
2016/02/15 PHP
Joomla框架实现字符串截取的方法示例
2017/07/18 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
HTML node相关的一些资料整理
2010/01/01 Javascript
如何确保JavaScript的执行顺序 之jQuery.html深度分析
2011/03/03 Javascript
JS验证邮箱格式是否正确的代码
2013/12/05 Javascript
基于javascript实现简单计算器功能
2016/01/03 Javascript
学习javascript面向对象 掌握创建对象的9种方式
2016/01/04 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
利用JavaScript判断浏览器类型及版本
2016/08/23 Javascript
JavaScript中浅讲ajax图文详解
2016/11/11 Javascript
JavaScript ES6中CLASS的使用详解
2016/11/22 Javascript
jquery使用EasyUI Tree异步加载JSON数据(生成树)
2017/02/11 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
使用JS监听键盘按下事件(keydown event)
2019/11/07 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
Python实现大文件排序的方法
2015/07/10 Python
Windows系统下使用flup搭建Nginx和Python环境的方法
2015/12/25 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
python Web flask 视图内容和模板实现代码
2019/08/23 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
Python远程方法调用实现过程解析
2020/07/28 Python
python爬虫使用正则爬取网站的实现
2020/08/03 Python
Python3爬虫ChromeDriver的安装实例
2021/02/06 Python
2019年分享net面试的经历和题目
2016/08/07 面试题
助人为乐表扬信范文
2014/01/14 职场文书
初中生自我鉴定
2014/02/04 职场文书
绩效考核实施方案
2014/03/18 职场文书
小学先进集体事迹材料
2014/05/31 职场文书
司机工作自我鉴定
2014/09/19 职场文书