难以通过Jquery将Ajax查询发送到Eclipse中的Servlet

时间:2013-11-14 07:43:30

标签: java jquery ajax servlets

我在Eclipse中的.jsp文件中运行了以下jQuery语句,该文件位于WebContent / public目录中:

        $(document).ready(function(){
        $('#login').click(function(){
            $('#display').html('Logging in...');
            var username = $('#username').val();
            var password = $('#password').val();
            $.ajax({
                url : '/AuthenticationServlet',
                type : 'POST',
                dataType : 'text',
                data : {'username' : username, 'password' :     password},
                success : function(data) {
                    $('#display').html('');
                    if(data != "SUCCESS"){
                        //TODO create an element to display validity
                        $('#display').html('Invalid Username/Password combination');
                    }else if (data == "SUCCESS"){
                        $('#username').val('');
                        $('#password').val('');
                        $('#display').html('Success!');                 
                    }   
                    else{
                        $('#display').html('Something has gone horribly wrong.');
                    }

                }
            });
            return false;
        });
    });

我在src / authentication目录中有我的servlet,AuthenticationServlet,它编写如下:

    /**
    * Servlet implementation class AuthenticationServlet
 */
@WebServlet("/AuthenticationServlet/*")
public class AuthenticationServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    /**
     * Default constructor. 
     */
    public AuthenticationServlet() {
        // TODO Auto-generated constructor stub
    }

    /**
     * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
     */
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // TODO Auto-generated method stub
    }

    /**
     * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
     * This method gets the username and password from the jsp file, then proceeds to pass them to
     * the authentication helper for validation.
     */
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //get the parameters from the request
        String username = request.getParameter("username");
        String password = request.getParameter("password");

        //verify the login/password combination is correct

        boolean authenticated = AuthenticationHelper.verifyUser(username, password);

        if(authenticated){
            response.getWriter().write("SUCCESS");
        }
        else{
            response.getWriter().write("FAILURE");
        }
    }
}

问题是,在输入有效的用户名和密码组合后,JSP中的'display'元素只会更改为“Logging in”并且根本不会更改,表示jquery不再执行最终将元素更改为其他内容的代码(无论是空白还是其他任何字符串)。我究竟做错了什么?我的网址不正确吗?

1 个答案:

答案 0 :(得分:1)

您想以username=usernameValue&password=passwordValu e发送请求。因此,请修改urldata,如下所示:

  url : 'AuthenticationServlet', // Remove /, it will skip the context path.
  data : {username : username, password : password}, // Remove quotation.