在servlet中终止ajax请求

时间:2016-02-21 11:00:01

标签: jquery ajax redirect servlets

我已经创建了一个登录表单

<div class="top1">
    <span id="book_store">Book Store</span>
    <div class="login_signup_form">
        <input type="email" id="email_id" placeholder="Email" name="email" />
        <input type="password" id="pas" placeholder="Password" name="password" />
        <span id="wrongPass" style="font-size: 15px; color: red; display: none;">
            Wrong Password
        </span>
        <button id="logIn">Log In</button>
        <button id="signUp">Sign Up</button>
    </div>
</div>

我正在使用ajax验证电子邮件和密码,这绝对没问题。

$("#logIn").click(function(){
   var info = {
       email: $("#email_id").val(),
       password: $("#pas").val()
   } ;
   $.ajax({
       type: 'POST',
       url: 'login',
       data: info,
       success: function (data) {
        if(data==="wrongPassword")
            $("#wrongPass").show();

       },
       error: function (jqXHR, textStatus, errorThrown) {
        alert(textStatus);
       }
   });
});

当密码错误时,错误会显示在同一页面上,但如果密码正确,我希望Servlet将请求重定向到JSP页面。 Servlet代码是:

if(!pass.equals(tempPass))
{
    writer.print("wrongPassword");
}
else
{
   dispatcher =   request.getRequestDispatcher("login.jsp");
   dispatcher.forward(request,response);
}

错误的密码案例工作正常,但是当密码正确时,请求不会重定向到login.jsp。我认为它会返回到ajax调用。 我可以在servlet中的else条件中断开ajax调用返回,以便请求不会返回到ajax调用而是转发到jsp页面??? PLZ帮助!!!!

这不是一个重复的问题......

我想将请求从servlet重定向到jsp。我已经使用ajax向该servlet发送了请求,并尝试将请求重定向到else块中的login.jsp但是它没有被定向...窗口中仍然存在相同的页面。

1 个答案:

答案 0 :(得分:1)

servlet由浏览器由服务器javascript处理。我确定你知道这一点,但可能你仍然让他们感到困惑。

您的servlet接收请求并发送响应。这就是它所能做的一切。

你可以做的不是显示提醒,而是让javascript重定向到相应的页面,就像这样......

location.href =&#34; login.jsp&#34;

话虽如此,我认为即使这是错误的做法。如果您想在登录失败时将它们重定向到不同的页面,您可能不应该使用ajax。当您想要避免整页刷新时,通常使用ajax。

您可能最好直接从表单直接发布到servlet,并将ajax完全保留在其中。