天天看点

jQuery.handleError is not a function 问题使用jQuery提供的fileupload

使用jQuery提供的fileupload

出现handleError is not a function,使用网上提供的在fileupload.js文件里面添加下面的函数,并不能解决我的问题,而且我并没有发现该文件,我是使用chrom提供的开发者工具,调试然后找到出现这个问题的js文件,通过chrome调试工具直接可以看到报错的代码行,然后在项目中找到该js文件,添加一个全局or局部的函数,就是网上提供的函数。

$.handleError = function(xhr, s, 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] );
                }
            };
           

错误继续存在,只是换了一个地方

然后你会发现问题并没有解决,然年我就继续google,然后有一个人在调试该问题的时候发现在调用完成后的返回值解析中,出现了问题。然后我继续调试,发现返回值data中包含有非json格式的数据,<pre>html标签,这个应该是有的框架或者什么框架对返回值进行二次包装导致的,既然找到问题,那就对data进行解析,取出json数据即可。通过chrome调试工具找到你的错位的代码行,然后进行处理
           
if (opts.dataType == 'json') {
                        var start = data.indexOf("{");
                        if(start != -1) {
                            var end = data.indexOf("}", start + 1);
                            if(end != -1) {
                                data = data.substring(start, end + 1);
                            }
                            eval("data = " + data);
                        }
 }           

对上述代码进行解析:

jQuery.handleError is not a function 问题使用jQuery提供的fileupload

总结

现在前端和后端其实区别不大,出现问题都可以通过调试去一步步发现问题,所以通过这次解决问题的过程,我发现google是必不可少的,但是自己的思考过程也必须存在,不然时间长了,就只会Google了,这样就本末倒置了。