标签:
ajaxFileUpload.js和jquery版本有对应关系,一般不支持大于等于1.8的jquery版本 问题1:如楼主所说,jQuery.handleError is not a function 原因是,经测试handlerError只在jquery-1.4.2之前的版本中存在,jquery-1.6 和1.7中都没有这个函数了,因此在1.4.2中将这个函数复制到了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] ); } }, 问题2:一直得到error ,无法执行指定的success方法。通过追踪ajaxFileUpload的执行过程发现,在调用它自身的uploadHttpData函数时,当执行if(type=="json") eval("data = "+data); 会抛出异常,导致在处理异常的时候将status = "error" 因此一直执行error方法。 上网查询,得知eval函数是用来执行一段,而并不是如我所想的反解json串 eval("data = "+data);的意思是 将data 赋值给 data参数 ,但是当我返回给页面的是一个简单的字符串,比如"OK" ,时,这样写就抛出异常。最后改为 eval("data = \" "+data+" \" ");即将返回的数据用双引号引起来当作字符串,然后赋给 data 。终于成功了。。。 贴出来,希望可以帮助到其他同样遇到这个问题的人。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>Ajax File Uploader Plugin For Jquery</title> <script type="text/javascript" src="jquery.js"></script> <script type="text/javascript" src="ajaxfileupload.js"></script> <script type="text/javascript"> function ajaxFileUpload() { $("#loading").ajaxStart(function() { $(this).show(); }).ajaxComplete(function() { $(this).hide(); }); $.ajaxFileUpload({ url : ‘upload‘,// servlet请求路径 secureuri : false, fileElementId : ‘fileToUpload‘,// 上传控件的id dataType : ‘json‘, data : {username : $("#username").val()}, // 其它请求参数 success : function(data, status) { if(data.msg) { alert(data.msg); } }, error : function(data, status, e) { alert(‘上传出错‘); } }) return false; } </script> </head> <body> <h1>Ajax文件上传例子,JAVA版</h1> <img id="loading" src="loading.gif" style="display: none;"> <form name="form" action="" method="POST" enctype="multipart/form-data"> 用户名:<input type="text" id="username" name="username"> <br> <input id="fileToUpload" type="file" size="45" name="fileToUpload" class="input"> <button class="button" onclick="return ajaxFileUpload();">上传</button> </form> </body> </html>
标签:
原文地址:http://my.oschina.net/yangting880815/blog/490834