2009-12-02 96 views
4

我想從jQuery的.ajax()函數調用一個servlet。

此刻,我不認爲我甚至要求servlet或傳遞PARAMATERS到它,但是很多谷歌搜索似乎並沒有幫助。有任何想法嗎?

這是我的html:

<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<script type="text/javascript" src="jquery.js"></script> 
<script type="text/javascript"> 
function login(){ 

    $("#loading").hide(); 

    var email = document.nameForm.email.value; 
    $.ajax({ 
    type: "GET", 
    url: "ProcessForm", 
    data: "email="+email, 
    success: function(result){ 
     alert(result); 
    }     
    }); 
}   
</script> 
<title>My AJAX</title> 
</head> 
<body> 
<p>This time it's gonna work</p> 
<form name="nameForm" id="nameForm" method="post" action="javascript:login()"> 

電子郵件 裝載

</body> 
</html> 

而且我的web.xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"> 
    <display-name>ajaxtry</display-name> 
    <welcome-file-list> 
<welcome-file>index.html</welcome-file> 
<welcome-file>index.htm</welcome-file> 
<welcome-file>index.jsp</welcome-file> 
<welcome-file>default.html</welcome-file> 
<welcome-file>default.htm</welcome-file> 
<welcome-file>default.jsp</welcome-file> 
    </welcome-file-list> 

    <servlet> 
<servlet-name>ProcessForm</servlet-name> 
<servlet-class>com.ajaxtry.web.ProcesFormServlet</servlet-class> 
    </servlet> 
    <servlet-mapping> 
<servlet-name>ProcessForm</servlet-name> 
<url-pattern>/ProcessForm</url-pattern> 
    </servlet-mapping> 
</web-app> 

該servlet只是此刻模板:

package com.ajaxtry.web; 

// imports here 

public class ProcessFormServlet { 

    public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException { 

    response.setContentType("text/html"); 
    PrintWriter out = response.getWriter(); 

    System.out.println(request.getParameter("email")); 
    } 
} 

回答

10

一對夫婦的問題在這裏:

你調用的System.out.println,這是剛剛發送輸出到標準輸出 - 而不是瀏覽器。嘗試將「System.out.println」更改爲「out.println」

看起來您已經在servlet代碼中定義了doPost(),但您的JavaScript正在使用「GET」方法。將doPost()重命名爲doGet(),或者定義它們。這就是說,你可能不應該打擾JavaScript,直到你實際上已經獲得了servlet的工作,以保持簡單。您應該可以通過在瀏覽器中加載/ ProcessForm?email = testing來測試它並查看一些輸出。一旦你開始了,那麼你可以開始擔心前端代碼。

希望這可以幫助你開始。

+1

謝謝,我已經完成了前兩件事,第二件事是一個很好的建議,我認爲這將是一條路。 – Ankur 2009-12-02 04:11:47

+0

我的意思是第三個,第二個是一個明顯的錯誤;) – Ankur 2009-12-02 04:42:12