【问题标题】:basic JSP, JSON, and AJAX implementation基本的 JSP、JSON 和 AJAX 实现
【发布时间】:2013-08-24 13:04:45
【问题描述】:

我有一个简单的登录来测试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 进行测试。

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

【问题讨论】:

    标签: javascript jquery ajax json jsp


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 你能举例说明你想说什么吗?我的意思是一个代码。我无法理解您所说的,我只是网络开发的新手。只是一个简单的详细代码,我所知道的只是基本的 MVC 和基本的 JSP,javascript
    • 这取决于您使用的 MVC。有些 MVC 会自动将对象转换为 JSON 字符串,有些则不会。如果您的 MVC 框架没有,我建议您查看 GSON (code.google.com/p/google-gson)。在确定您的框架是否可以返回 JSON 对象后,实现应该相对简单(您创建一个返回对象的方法,或者创建一个将 JSON 写入响应的方法)。
    猜你喜欢
    • 2023-03-05
    • 2010-09-25
    • 1970-01-01
    • 1970-01-01
    • 2015-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-13
    相关资源
    最近更新 更多