0

我有一个简单的登录来测试AJAX

继承我的片段:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Login Test Page</title>
<script src="../js/jquery-1.10.1.min.js" ></script>
<script type="text/javascript">
$('input[type="submit"]').click(function(e) {
    e.preventDefault();
    var action_script = $(this).closest('form1').prop('action');
    $.post(action_script, {
        userName : $(this).closest('form1').find('input[name="userName"]'),
        password : $(this).closest('form1').find('input[name="password"]')
    }, function(returned_data) {
        //this part executes once the server returns a successful response
        alert("Please fill UserName & Password!");
    });
});
</script>
</head>
<body>
    <form action="LoginController" method="post">
        <!-- Login body -->
        <table>
            <tr>
                <td><label for="userName">Username:</label></td>
                <td><input type="text" name="userName" /></td>
            </tr>
            <tr>
                <td><label for="password">Password:</label></td>
                <td><input type="password" name="password" /></td>
            </tr>
            <tr>
                <td><input type="submit" /></td>
            </tr>
        </table>
    </form>
</body>

和一个控制器

UserDAO userDAO = new UserDAO(); // instantiate database

        String userName = request.getParameter( "userName" ); // get userName String from the Login.jsp
        String password = request.getParameter( "password" ); // get password String from the Login.jsp

        if( userDAO.authenticate( userName, password ) ) // validate userName and password
        {

            UserModel userModel = userDAO.getUserDetails( userName ); // get userModel that correspond to userName parameter

            request.getSession().setAttribute( "userName", userName ); // set SESSION REQUEST to be forward to MainPage.jsp
            request.setAttribute( "userDetails", userModel ); // set REQUEST to be forward to MainPage.jsp

            RequestDispatcher rd = request.getRequestDispatcher( "MainPage.jsp" );
            rd.forward( request, response ); // forward request to MainPage.jsp
            return;
        }
        else
        {
            response.sendRedirect( "Login.jsp" );
            return;
        }

我想要做的是如果登录失败,我想保留用户名和密码来测试它是如何AJAX工作的,如果可能的话也可以测试,JSON但我还不知道我应该在哪里JSON进行测试。

我不知道我做错了什么,这是我第一次进行网络开发,请指导我。

4

1 回答 1

0

您在这里遇到的主要问题是服务器返回的内容。您希望它返回一个JSON对象,但它会返回一个网页(很可能是HTML)。

我真的在这里看到了两个选项之一(也许更多,但我现在想不出它们):

  1. 您可以为JSON帖子(如action_script + ".json")设置一个单独的 URL,并且在您的控制器中,将验证用户凭据的逻辑与将结果返回给浏览器的逻辑分开。也就是说,使用三种方法代替一个方法:(a) 验证用户凭据的内部方法,(b) 调用 (a) 并返回HTML或重定向的公共方法,以及 (c) 调用 (a) 的公共方法) 并返回一个JSON对象。
  2. 或者,您可以检测您收到的帖子类型以查找XHR请求(和/或检查请求的标头以查找“application/json”的内容类型)并JSON在这些情况下输出对象。

实现完全取决于您以及您希望应用程序有多灵活。

于 2013-08-24T13:50:16.283 回答