我试图从jQuery的.ajax()函数调用servlet。
目前,我认为我什至没有在调用servlet或将参数传递给它,但是许多Googling似乎并没有帮助。有任何想法吗?
这是我的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")); } }
这里有几个问题:
您正在调用System.out.println,它只是将输出发送到标准输出-而不是发送到浏览器。尝试将“ System.out.println”更改为“ out.println”
看起来您已经在servlet代码中定义了doPost(),但是您的JavaScript使用的是“ GET”方法。将doPost()重命名为doGet(),或定义它们两者。
话虽这么说,您可能根本不应该去理会javascript,直到您使servlet真正起作用为止,以使其保持简单。您应该能够通过在浏览器中加载/ ProcessForm?email = testing来对其进行测试,并查看一些输出。一旦掌握了这一点,就可以开始担心前端代码了。
希望这可以帮助您入门。