天天看點

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了,這樣就本末倒置了。