最近做项目,用ajaxfileupload的$.ajaxFileUpload()方法上传文件,服务器端接受时,如发生错误就将错误提示写入response输出流,然后前端的error方法就会将错误信息显示出来,问题就是,我故意传了一个错误的文件,按理来讲服务端走异常,将错误信息写入response流,并flush,发给浏览器有error方法显示导入出错,但是特什么也没提示,就一直显示"正在上传"。打开调试台,错误为:jQuery.handleError is not a function!
自己百度了一下,大致问题是这样:
ajaxfileupload现在来讲比较古老了,它以来Jquery,而且是1.4.2版本的,那时候1.4.2版本的jQuery有handlerError方法,到了现在的1.9+就没有了,所以会报handlerError找不到的错误,解决方法是:找到ajaxfileupload.js文件,在 " jQuery.extend({ "之后加上一下代码,就可以了!
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] );
}
}
But!!我试过了,还是不行,为什么呢? 因为浏览器缓存了文件,清空一下浏览器的cache再试一下就可以了!