无法向Servlet发送ajax post请求

时间:2014-11-24 13:52:32

标签: java jquery ajax post

这是我的代码。

的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()调用运行。

1 个答案:

答案 0 :(得分: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调用的url并使用回调函数。

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

<强>声明: 我还没有测试过它!