2012-03-04 5 views
0

document.location()logn.jsのコードはInternet Explorerでは正常に動作しますが、Firefoxでは動作しません。指定されたjsコードは、ログインページにAJAXを実装するためのコードです。AJAXはコードをサーブレットに送信し、ログインOKであればユーザのログインを応答として行います。.jsコードで指定されたdocument.location()関数はInternet Explorerでは正常に動作しますが、Firefoxでは機能しません

logn.js

function logn(emailId,password) { 
    var parameters="emailId="+emailId+"&password="+password; 
    var xmlhttp; 

    if (window.XMLHttpRequest) { // code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp = new XMLHttpRequest(); 
    } else { // code for IE6, IE5 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 

    xmlhttp.onreadystatechange = function() { 
     if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {  
      if(xmlhttp.responseText.toString()=="User Login") {  
       document.location("userhome.jsp"); 
      } else if(xmlhttp.responseText.toString()=="Admin Login") { 
       document.location("adminhome.jsp"); 
      }else { 
       //document.getElementById("message").innerHTML = xmlhttp.responseText; 
       alert(xmlhttp.responseText); 
      }  
     } 
    }; 

    xmlhttp.open("POST", "LoginServlet", true); 
    xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); 
    xmlhttp.send(parameters); 
} 

次のサーブレットコードLoginServlet.java

protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     PrintWriter out=response.getWriter(); 
     String emailId=request.getParameter("emailId"); 
     String password=request.getParameter("password"); 



     if (emailId.isEmpty()||password.isEmpty()) { 
      out.write("Please enter EmailId/Password"); 
     } else { 
      LoginModel lm=new LoginModel(); 
      lm.setEmailId(emailId); 
      lm.setPassword(password); 

      LoginService ls=new LoginService(); 
      lm=(LoginModel) ls.loginCheck(lm); 

      if(lm!=null){ 
       System.out.println("login ok"); 
       HttpSession session =request.getSession(); 
       System.out.println(lm.getLoginId()); 
       session.setAttribute("userlogin", lm); 

       if (lm.getIsAdmin()==0) { 
        System.out.println("aaaaaaaaaaa"); 
        out.write("User Login"); 
       } 
       else if (lm.getIsAdmin()==1) 
        out.write("Admin Login"); 

       ls.setIsActive(lm.getLoginId(),1); 
      } else 
       out.write("Wrong EmailId/Password"); 
     } 
    } 
+0

あなたはFirefoxでインストール放火犯を持っていないので、エラーが発生しているかを見ますか? – peroija

答えて

2

あなたが使用している必要があります:

window.location = "userhome.jsp"; 

window.location = "adminhome.jsp"; 

あなたはそれをやったかと夫婦の問題がありました。 document.locationの代わりにwindow.locationを使用することをお勧めします。そして、あなたはそれを関数のように呼び出さず、代入します。

MDNリファレンス:https://developer.mozilla.org/en/DOM/window.location

+0

window.locationとdocument.locationの違いは何ですか? – AlanFoster

+0

@ AlanFoster - 発見したように、document.locationとのクロスブラウザの互換性の問題があり、一部のブラウザでは読み取り専用です。詳細はこちらhttp://stackoverflow.com/questions/2430936/whats-the-difference-between-window-location-and-document-location-in-javascrip – jfriend00

+0

ありがとう@ jfriend00 ...それは働いた:) – Sighil

1

代わりにはdocument.location(IS)試す:

document.location.href = ... 
+0

thanx bro ..このコードも使えます:) – Sighil

+0

もちろんありますが、;-) – Tom

関連する問題