java - 如何使用ajax通过servlet重定向到成功页面?

标签 java jquery ajax jsp servlets

我有一个 jsp 页面,它接受用户名和密码,然后重定向到一个 servlet。下面是jsp代码,

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<head>

    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="">
    <meta name="author" content="">

    <title>DeliverMe</title>

    <!-- Bootstrap Core CSS -->
    <link href="css/bootstrap.min.css" rel="stylesheet">

    <!-- Custom CSS -->
    <link href="css/sb-admin.css" rel="stylesheet">

    <!-- Custom Fonts -->
    <link href="font-awesome-4.1.0/css/font-awesome.min.css" rel="stylesheet" type="text/css">

    <!-- HTML5 Shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!-- WARNING: Respond.js doesn't work if you view the page via file:// -->
    <!--[if lt IE 9]>
        <script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js"></script>
        <script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js"></script>
    <![endif]-->

        <!-- jQuery Version 1.11.0 -->
    <script src="js/jquery-1.11.0.js"></script>
<script type="text/javascript">
$(document).ready(function() {
    $('#btn-login').click(function() {
        var userName = $('#userName').val();
        var password = $('#password').val();
        var datastr='userName='+userName+'&password='+ password;
        $.ajax({
            url : 'LoginCheck',
            data :datastr,
            success : function(responseText) {
                $('#ajaxGetUserServletResponse').text(responseText);
            },
        error:function(url){
            window.location = url;
          }  

        });
    });
});
</script>
</head>

</head>
<body>
  <div class="container">    
  <span style="color: #000099"><center><h2>DeliverMe Admin Panel</h2></center></span>
        <div id="loginbox" style="margin-top:50px;" class="mainbox col-md-6 col-md-offset-3 col-sm-8 col-sm-offset-2">                    
            <div class="panel panel-info" >
                    <div class="panel-heading">
                        <div class="panel-title">Sign In</div>

                    </div>     

                    <div style="padding-top:30px" class="panel-body" >

                        <div style="display:none" id="login-alert" class="alert alert-danger col-sm-12"></div>

                        <form id="loginform" class="form-horizontal" role="form">

                            <div style="margin-bottom: 25px" class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                        <input id="userName" type="text" class="form-control" placeholder="username or email">                                        
                                    </div>

                            <div style="margin-bottom: 25px" class="input-group">
                                        <span class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></span>
                                        <input id="password" type="password" class="form-control" name="password" placeholder="password">
                                    </div>


                                <div style="margin-top:10px" class="form-group">
                                    <!-- Button -->

                                    <div class="col-sm- 12 controls">
                                      <a id="btn-login"  class="btn btn-success">Login</a>


                                    </div>
                                </div>
<span id="ajaxGetUserServletResponse" style="color: red;"></span>
                            </form>     


                        </div>                     
                    </div>  
        </div>

    </div>

</body>
</html>

然后我的 servlet 检查用户名和密码,如果错误则给出错误文本,但如果为真则应该重定向到成功页面。但是没有效果。下面是 servlet 代码,

if(db.loginCheck(userName, password))
            {
                request.getRequestDispatcher("/main.jsp").forward(request, response);
            }else
            {
                 String greetings = "Invalid Username/Password";
                 response.setContentType("text/plain");
                response.getWriter().write(greetings);

            }

最佳答案

我找到了解决方案。我已经像这样更改了我的 servlet 的响应,

if(db.loginCheck(userName, password))
            {
                response.getWriter().write("1");
            }else
            {
                 greetings = "Invalid Username/Password";
                 response.setContentType("text/plain");
                response.getWriter().write(greetings);

            }

在我的 jsp 页面上我放了这个,

<script type="text/javascript">
$(document).ready(function() {
    $('#btn-login').click(function() {
        var userName = $('#userName').val();
        var password = $('#password').val();
        var datastr='userName='+userName+'&password='+ password;
        $.ajax({
            url : 'LoginCheck',
            data :datastr,
            success : function(responseText) {
                if(responseText == "1"){
                    window.location.assign("/main.jsp");
                  }else{
                      $('#ajaxGetUserServletResponse').text(responseText);
                  }
            },

        });
    });
});
</script>

关于java - 如何使用ajax通过servlet重定向到成功页面?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27315006/

相关文章:

java - 如何在类实例之间共享相同的变量?

javascript - 获取带有起始标记缺失的结束标记的精确 html()

javascript - 使用 jQuery AJAX PHP 的表单不会在电子邮件中发送字段输入

php - 在跨域 ajax 请求后保留 cookie

javascript - 如何将值从 Ajax 响应对象传递到元素

java - 主线程和单个长时间运行的线程之间的线程安全双向通信

java - 深度优先搜索中的 ArrayIndexOutOfBounds

java - Hibernate Criteria 将两个表与第二个表上的条件连接起来,结果是第一个表

javascript - jQuery 根据日期禁用或启用提交按钮

jquery - Ajax 不发送变量