ajaxFileUpload.js

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 。終於成功了。。。
貼出來,但願能夠幫助到其餘一樣遇到這個問題的人。javascript

<%@ 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>
相關文章
相關標籤/搜索