js使用AjaxFileupload插件实现文件上传

2023-11-18

      最近做项目,需要上传表单元素中的文件POST到目标URL,并把得到的数据显示到本页面上,而不跳转到目标URL。那么,现在就要明确两件事:

1)不能直接提交表单,因为一旦点击submit就会自动跳转到action界面;

2)可以选择ajax进行异步数据传输;

      原来只是用过ajax进行简单的数据传输,还没上传过文件呐,于是查了一下,如获至宝地发现了jQuery插件AjaxFileupload,专门用来上传文件~于是乎就马上踏上了AjaxFileupload的研究之旅。


一、实现步骤:

1)引入相关的js

<script type="text/javascript" src="js/jquery-1.11.0.js"></script>
<script type="text/javascript" src="js/ajaxfileupload.js"></script>

2)代码编写

$.ajaxFileUpload({
		url: "../GetInfo.jsp",//处理本文件的action
		secureuri: false,
		fileElementId: 'uploadFile1', //input type="file"的id
		dataType: 'json',//定义数据的返回格式是json
		success: function (data, status) {  
			console.log(data);
            if(typeof(data.error) != 'undefined') {  
                if(data.error != '') {  
                    alert(data.error);  
                } else {  
                    alert(data.msg);  
                }  
            }  
			FillTable(data);
        },  
        error: function (data, status, e) {  
            alert(e);  
        }  
    });

二、遇到的问题总结:

1)使用的AjaxFileupload版本与jQuery版本不相同导致报错

一开始使用的是jQuery-2.1.4版本,后来报错了,查了原因发现可能是版本不同,才发现AjaxFileupload的版本是1.2的(真是一个老古董),不过没办法,为了上传文件还是忍忍吧,就把jQuery版本换成了和它一样的老古董。然后问题解决~(AjaxFileupload版本与jQuery版本不用严格相同,但是也不能差太多)

2)AjaxFileupload文件上传成功但是不执行回调函数

修改ajaxfileupload.js源码,把最后几行代码中的代码

if ( type == "json" )
            eval( "data = " + data );
修改成:

if ( type == "json" )
            data=eval("("+data.replace("<pre>","").replace("</pre>","")+")");

3)控制台报错jQuery.handleError is not a function

现在大家至少也在用jquery1.9以上的版本,ajaxfileupload的版本早就不更新了,它例子里使用的Jquery是1.2的,好老呀。。。这个问题,我以前开发过程中遇过,网上说经测试(我是没测试),是版本1.4.2之后的版本才有handlerError方法,之前就不存在了,为了能够继续使用ajaxfileupload上传我们的附件,只好将代码拷进我们的项目中的ajaxfileupload.js文件中,如下:

handleError: function( s, xhr, status, e ) 		{
    	// If a local callback was specified, fire it
    			if ( s.error ) {
    				s.error.call( s.context || s, xhr, status, e );
    			}

    			// Fire the global callback
    			if ( s.global ) {
    				(s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
    			}
    }

4)AjaxFileupload上传多文件的实现

修改ajaxfileupload.js源码,

//var oldElement = jQuery('#' + fileElementId);
//var newElement = jQuery(oldElement).clone();
//jQuery(oldElement).attr('id', fileId);
//jQuery(oldElement).before(newElement);
//jQuery(oldElement).appendTo(form);
  //set attributes
	for(var i in fileElementId)
	{    
	      var oldElement = jQuery('#' + fileElementId[i]); 
		  var newElement = jQuery(oldElement).clone();    
	      jQuery(oldElement).attr('id', fileId);    
	      jQuery(oldElement).before(newElement);    
	      jQuery(oldElement).appendTo(form);    
	      });      
	}  



本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

js使用AjaxFileupload插件实现文件上传 的相关文章

随机推荐

  • [论文精读]BERT

    BERT Pre training of Deep Bidirectional Transformers for Language Understanding Abstract 作者介绍了一种新的语言模型 叫做BERT 是来自transfo
  • 服务器硬盘故障运维,运维人员处理云服务器故障方法总结

    我们团队为Ucloud云计算服务提供专家技术支持 每天都要碰到无数的用户故障 毕竟IAAS涉及比较底层的东西 不管设计的是大客户也好还是小客户 有了问题就必须要解决 也要要是再赶上修复时间紧 奇葩的技术平台 缺少信息和文档 基本上这过程都会
  • 微信小程序之计算器

    参考博客 微信小程序 简易计算器 Huang xianlong的博客 CSDN博客 微信小程序计算器 效果图 代码 calculator wxml
  • python学习小报2--python软件使用的注意事项

    一 命令行基本操作 安装好python之后 可以通过右键windows 选中运行 然后输入cmd进入系统页面 点击确定 进入系统页面 gt gt gt 表示提示符 此时在提示符之后输入python点击回车 即可进入python编程 从图中即
  • 2023年第二届计算与人工智能国际会议(ISCAI 2023)

    会议简介 Brief Introduction 2023年第二届计算与人工智能国际会议 ISCAI 2023 会议时间 2023年10月13 15日 召开地点 中国 上海 大会官网 www iscai org 2023年第二届计算与人工智能
  • 机器学习之基础知识(全)

    目录 1 机器学习概述 1 1 人工智能概述 1 1 1 人工智能使用场景 1 1 2 人工智能小案例 1 2 人工智能发展历程 1 2 1 图灵测试 1 2 2 发展历程 1 2 3 小结 1 3 人工智能主要分支 1 3 1 人工智能
  • RxJS新手入门

    文章目录 1 介绍 2 核心概念 3 基本运作过程 4 RxJS 如何通过运算符过滤资料 5 RxJS 主体物件 Subject 的用法 6 弹珠图 7 如何选择运算符 1 介绍 RxJS 是什么 用一句话类概括就是 RxJS 是用于 Ja
  • Kali Linux没有无线网卡?玩个锤纸~

    Kali Linux没有无线网卡 玩个锤纸 一 USB无限网卡 使用Kali linux 先准备好一个适合Kali系统的USB外置无限网卡 注意内置网卡并不适合渗透测试 Linux系统的指令相对于一般人来说比较晦涩难懂 最好选择免驱动类型
  • 基于Servlet-API型JAVA内存马(filter型、servlet型、listener型)

    前言 常规的木马实际写出落地后容易被检查出来 并且webshell被发现后也就导致我们的行动被发现 很容易造成木马被查杀 利用漏洞被修复 使我们的攻击变得更加艰难 所以内存马的出现与利用无疑是增强了隐蔽性 可以让我们的攻击更加稳定 持久 而
  • eclipse创建web service全过程

    创建Web Service步骤 一 创建服务端工程 1 WebServerTest web 工程 File New Other 选择Dynamic Web Project 配置Tomcat服务器 点击Browse选择Tomcat所在目录 点
  • Anaconda常用命令

    文章目录 一 简介 二 常用命令 2 1管理环境 2 2管理包 三 实践 参考 一 简介 Anaconda是Python环境和包的管理工具 可以给Python创建环境 并在创建的环境中添加需要的包 二 常用命令 Windows打开 Anac
  • 南方科技大学计算机学科评估,全国第四轮学科评估结果公布 我校7个学科进入B类...

    原标题 全国第四轮学科评估结果公布 我校7个学科进入B类 近日 教育部学位与研究生教育发展中心公布了全国第四轮学科评估结果 我校25个参评学科有13个上榜 其中 7个学科进入B类 6个学科进入C类 入选学科数位居省属高校第4位 学科评估是教
  • 基于LU分解的矩阵求逆

    import numpy as np import sys def LU deco inverse m dim m shape 0 E np mat np eye dim L np mat np eye dim U m copy for i
  • 无偏估计的数学证明和分析

    最近学习PCA 在求最大化方差 2 1 P 1
  • 自动化测试高频面试题-90%可能会被问到

    Hello 你们的好朋友九九又又又来了 今天猜猜我给大家带来点啥干货呢 最近很多小伙伴出去面试的时候经常会被问到跟自动化测试相关的面试题 所以 今天九九特意给大家整理了一些经常被公司问到的自动化测试相关的面试题 停 咱先收藏起来好吗 别到时
  • js中过一段时间后终止while循环,防止死循环的方法

    今天发现了一个比较有趣的事 相信很多人遇到过写while循环时 在测试时很容易陷入死循环 导致要关闭页面再重启才能继续测试 那如果频繁调试 就每死循环一次就重启一次 很烦 所以想写一个到一定时间就终止循环的函数 刚开始用setTimeout
  • rhel8订阅注册激活

    先注册账号进行订阅 注册系统 https www howtoing com enable rhel subscription in rhel 8
  • JDK1.8的新特性(详细总结)

    目录 前言 一 jdk8简介 二 Lambda表达式语法 函数式接口 三 jdk8 内置四大核心函数接口 消费型接口 海王式接口 只知道索取 供给型接口 舔狗式接口 只知道付出 不索取回报的 函数型接口 双向奔赴 有输入有输出 断言型接口
  • C语言上机实验思路分享5

    实验内容 方法和步骤 1 编写一个函数 由实参传来一个整数n 将它各个位上的数字逆序输出 例如输入 123 输出为321 2 求方程ax 2 bx c O的根 用3个函数分别求当 b 2 4ac大于0 等于0和小于0时的根 并输出结果 从主
  • js使用AjaxFileupload插件实现文件上传

    最近做项目 需要上传表单元素中的文件POST到目标URL 并把得到的数据显示到本页面上 而不跳转到目标URL 那么 现在就要明确两件事 1 不能直接提交表单 因为一旦点击submit就会自动跳转到action界面 2 可以选择ajax进行异