2014-11-24 39 views
2

这里是我的代码,无法发送AJAX POST请求到Servlet的

的Javascript

$(document).ready(function() 
    { 
     $("button").click(function(){ 
      $.post("AjaxpostloginServlet.java", 
       { 
       name:"kevin", 
       pass:"Duckburg" 
      }); 
     }); 
}); 

的Java servlet

package com.iappuniverse.ajaxpostlogin; 

import java.io.IOException; 
import javax.servlet.http.*; 

@SuppressWarnings("serial") 
public class AjaxpostloginServlet extends HttpServlet 
    { 
     public void doPost(HttpServletRequest req, HttpServletResponse resp)throws  IOException 
      { 

       String name=req.getParameter("name"); 

       System.out.println(name); 

      } 
    } 

在servlet这里的名称不打印在控制台中。尝试使用ajax .post()将数据发送到服务器,但不能使该servlet链接到ajax .post()呼叫运行。

+0

尝试从'post'方法中移除'.java'。使用'$ .post(“AjaxpostloginServlet”)'而不是'$ .post(“AjaxpostloginServlet.java”)' – Joe 2014-11-24 14:00:24

+0

您的ajax请求必须发送到您的servlet映射的url。 https://docs.oracle.com/cd/E13222_01/wls/docs92/webapp/configureservlet.html – 2014-11-24 14:12:17

+0

检查也http://stackoverflow.com/questions/2484556/how-to-ouput-text-to-java-控制台由小服务程序 – 2014-11-24 14:37:20

回答

2

更改web.xml为类似下面

<?xml version="1.0" encoding="ISO-8859-1" ?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
    version="2.4"> 

    <display-name>Application</display-name> 
    <description> 
     Description Example. 
    </description> 

    <servlet> 
     <servlet-name>login</servlet-name> 
     <servlet-class>AjaxpostloginServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>login</servlet-name> 
     <url-pattern>/login</url-pattern> 
    </servlet-mapping> 
</web-app> 

让我们再进一步,改变你的servlet POST方法

public void doPost(HttpServletRequest req, HttpServletResponse resp)throws IOException { 
     String name=req.getParameter("name"); 
     response.setContentType("text/plain"); 
     response.setCharacterEncoding("UTF-8"); 
     response.getWriter().write(name); 

} 

终于改变Ajax调用的网址,并使用一个回调功能。

$(document).ready(function() { 
     $("button").click(function() { 
      $.post("login",{ 
       name:"kevin", 
       pass:"Duckburg" 
      }).done(function(data) { 
        alert("name: " + data); 
      }) 
     }); 
}); 

免责声明: 我没有测试一下吧!