1. 程式人生 > >Ajax請求servlet報 404錯誤,提示 沒有發現檔案、查詢或URl

Ajax請求servlet報 404錯誤,提示 沒有發現檔案、查詢或URl

<script type="text/javascript">

        var xmlHttp;

        /**
         * 根據 瀏覽器的支援返回 不同的 XMLHttpRequest
         */

        function createXMLHttpRequest(){
            if(window.ActiveXObject){
		return new ActiveXObject("Microsoft.XMLHTTP");
            }else{
                return new XMLHttpRequest();
	    }
        }

        /**
         * 判斷 狀態碼,執行對應的事件操作
         */
	function processRequestGet() {
	    if(xmlHttp.readyState==4){
		if (xmlHttp.status==200) {
		     if(result==true){
			 document.getElementById("loginDiv").innerHTML="使用者名稱已存在";
		     }else{
                         document.getElementById("loginDiv").innerHTML="使用者可以註冊";
		     }
		}else{
                    window.alert(xmlHttp.status+" +++ "+window.xmlHttp.responseText);
		}
	    }else{
                window.alert(xmlHttp.readyState);
            }
        }
      
        /**
         * 判斷 狀態碼,執行對應的事件操作
         */
        function callBackGet() {
            var  username=document.getElementById("nameGet").value;

            /***注意:loginAction 是我在web.xml 中配置的 一個servlet類的 url別名***/
	   // var url="loginAction?username="+username;
            
            /** 
             * 404 錯誤,就來自以上 這個 url變數。
             * 我們以為 寫上"loginAction" 這個servlet類的 別名,tomcat服務就會自動找到
             *對應的 類,然後執行。而事實上,tomcat並沒有成功找到該 url路徑,所以報了404錯誤。
             */
              //修改url,把專案名加上(我的專案名是:WebForAjax)。寫成:   
         
              var url="/WebForAjax/loginAction?username="+username;

            //這樣就解決了
                
	    var urlEn=encodeURI(url);//url包含中文,不符合tomcat高版本的傳輸規定。
           //所以要把 url 進行編碼,以保證符合傳輸規定
            if (xmlHttp==null) {
                xmlHttp = createXMLHttpRequest();
            }
		xmlHttp.onreadystatechange=processRequestGet;
		xmlHttp.open("GET",urlEn,true);
		xmlHttp.send(null);
            }
       }
</script>

            /**              * 404 錯誤,就來自以上 這個 url變數。              * 我們以為 寫上"loginAction" 這個servlet類的 別名,tomcat服務就會自動找到              *對應的 類,然後執行。而事實上,tomcat並沒有成功找到該 url路徑,所以報了404錯誤。              */               //修改url,把專案名加上(我的專案名是:WebForAjax)。寫成:                            var url="/WebForAjax/loginAction?username="+username;

            //這樣就解決了