我已经创建了一个登录表单
<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但是它没有被定向...窗口中仍然存在相同的页面。
答案 0 :(得分:1)
servlet由浏览器由服务器javascript处理。我确定你知道这一点,但可能你仍然让他们感到困惑。
您的servlet接收请求并发送响应。这就是它所能做的一切。
你可以做的不是显示提醒,而是让javascript重定向到相应的页面,就像这样......
location.href =&#34; login.jsp&#34;
话虽如此,我认为即使这是错误的做法。如果您想在登录失败时将它们重定向到不同的页面,您可能不应该使用ajax。当您想要避免整页刷新时,通常使用ajax。
您可能最好直接从表单直接发布到servlet,并将ajax完全保留在其中。