2016-02-21 62 views
0

我創建了一個登錄表單Ajax請求的終止於servlet的

<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中的其他條件的ajax調用返回,以便請求不會返回到ajax調用,而是它被轉發到jsp頁面? PLZ help !!!!

這不是一個重複的問題...

我想重定向請求由servlet來JSP。我已經使用ajax向該servlet發送請求,並嘗試將請求重定向到其他塊中的login.jsp,但它未被定向...相同的頁面仍保留在窗口中。

+0

除非有一些額外的JavaScript沒有顯示,否則這裏沒有任何東西可以讓它在客戶端重定向。只需從servlet重定向就不會對客戶端做任何事情,因爲響應是由JavaScript處理的。 – user1751825

+0

我收集你沒有理解下面的答案和一個重複?只需在JavaScript中執行'window.location ='newurl''。您只需將servlet傳遞'newurl'作爲ajax響應。 – BalusC

回答

1

該servlet由服務器(JavaScript)通過瀏覽器進行處理。我相信你知道這一點,但可能你仍然讓他們感到困惑。

您的servlet接收請求併發送響應。這是它所能做的。

你可以做什麼,而不是顯示一個警告,得到的JavaScript重定向到相應的頁面,就像這樣......

location.href =「login.jsp的」

話雖如此,我認爲即使這是錯誤的方法。如果你想在登錄失敗時將它們重定向到不同的頁面,你可能不應該使用ajax。當你想避免全頁面刷新時,你通常使用ajax。

你可能比直接從表單直接發送到servlet更好,並且將ajax完全拋棄。

+0

但我不想刷新頁面時,輸入錯誤的密碼....這就是爲什麼我使用ajax但同時它創建問題重定向請求jsp .....所以我用同樣的location.href從servlet成功返回後請求login.jsp –

+0

啊,我想我知道你的意思。你的意思是你想讓servlet將執行轉移到login.jsp並將該內容返回給Ajax?您是否嘗試過從servlet內發出重定向?我相信ajax調用,默認情況下會遵循重定向。 – user1751825

+0

是的,我想要的是相同的,但servlet並沒有將請求發送到login.jsp。我嘗試了在其他塊@ user1751825 –