无法在ajax代码中将json从servlet返回到jsp

时间:2016-02-07 11:10:47

标签: java jquery json ajax jsp

我是AjaxJqueryJSON内容的新手。我已使用jsp servlet技术创建了一个登录页面。在登录页面上,当用户按下提交按钮时,数据将收集到JSON并通过AJAX传输到控制器。现在,在控制器中,如果在某些条件下,发现登录名是正确的,那么它应该使用RequestDispatcher将它发送到成功页面。但是,如果条件不满足,那么它应该在JSON对象中编写消息并将其作为内容类型json返回。现在的问题是我能够在控制器上接收JSON数据,但是如果他输入了错误的数据,则无法在成功时重定向,也无法向用户显示警告框。以下是文件:

的login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script>
function validateAndSet()
{
    var jsonRequest = {};
    var login_name = $.trim($('#loginName').val());
    var password = $.trim($('#password').val());
    if(login_name=='' || login_name.length==0 ){
        alert("Please enter login name.");
        $('#loginName').focus();
        return false;
    }
    if(password=='' || password.length==0 ){
        alert("Please enter password.");
        $('#password').focus();
        return false;
    }
    jsonRequest["login_name"] = login_name;
    jsonRequest["password"] = password;
    return jsonRequest;
}
</script>
</head>
<body>
<jsp:include page="commonResources/Header.jsp">
<jsp:param value="none" name="headerMenu"/>
</jsp:include>
<script>
$(document).ready(function(){
     $("#but").click(function(){
         var formData=validateAndSet();
         var strUrl="rwcntrlr.do?action=loginForm";
         $.post(strUrl, {jsonData: JSON.stringify(formData)},function(response){
                response = jQuery.parseJSON( response);
                if(response.status=='NOT OK')
                {
                    alert("not ok");
                }
                else{
                    alert('OK');
                }
            });
    }); 
});
</script>
<br><br>
<div class="row">
    <div class="col-sm-4"></div>
    <div class="col-sm-4">
<div class="container-fluid">
  <div class="panel panel-default" id="p1">
    <div class="panel-heading"><h3>Login</h3></div>
    <div class="panel-body">
    <center>
    <table>
    <tr>
    <td height="50">LoginName:</td><td height="50"><input type="text" id="loginName" name="loginName"/></td>
    </tr>
    <tr>
    <td height="20">Password:</td><td height="20"><input type="password" id="password" name="password"/></td>
    </tr>
    <tr><td height="50" colspan="2" align="right"><input type="submit" id="but" name="subBut" value="Go>" /></td></tr>
    </table>
    </center>
    </div>
  </div>
</div>
   </div>
    <div class="col-sm-4"></div>
  </div>
</body>
</html>

控制器servlet:

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String formName=request.getParameter("action");

        if(formName.equalsIgnoreCase("loginForm")){
            String strJSONData = request.getParameter("jsonData");
            System.out.println(strJSONData);// data received correctly...
            JSONObject jsonResponse = new JSONObject();

            try{
                JSONObject requestedJSONObject = new JSONObject(strJSONData);
                String login_name = requestedJSONObject.getString("login_name");
                String password = requestedJSONObject.getString("password");
                if(login_name.equalsIgnoreCase("u2")){
                    RequestDispatcher rd=request.getRequestDispatcher("employeeSection/employeeDailySheet.jsp");
                    response.setContentType("text/html");
                    rd.forward(request, response);
                    }
                    else{
                        jsonResponse.put("status", "NOT OK");
                        response.setContentType("application/json");
                        response.getWriter().write(jsonResponse.toString());
                    }

            }
            catch(Exception ex){
                ex.printStackTrace();
            }           
        }
    }

当我按下login.jsp上的提交按钮时,没有任何反应。没有显示控制台错误。我该怎么做才能解决这个问题。

0 个答案:

没有答案