2016-09-26 14 views
0

Ajaxリクエストをバックエンドに送信する簡単なログインページを作成しました。しかし、私は成功したログインのページをリダイレクトすることができません。リダイレクトは15回に1回しか動作しませんが、なぜこれが起こっているのかわかりません。私はwindow.location.hrefのようなリダイレクトのさまざまな可能性を試してみましたが、同じ動作を見直して置き換えてください。HTMLページリダイレクトがJavaScript内で動作しない

ここにお役立てください。

function loginNow(form) { 

     var uname, passwd; 
     if ((uname = document.getElementById("username").value) === "") 
      alert("Username cannot be empty!"); 

     if ((passwd = CryptoJS.SHA1(document.getElementById("password").value).toString()) === "") 
      alert("Please provide a password!"); 

     uname = uname.toLowerCase(); 
     var xmlObj; 
     // For all known browsers 
     if (window.XMLHttpRequest) { 
      xmlObj = new XMLHttpRequest(); 
     } 

     if (xmlObj.overrideMimeType) { 
      xmlObj.overrideMimeType('text/xml'); 
     } 
     xmlObj.open("GET","../jsp/authenticate.jsp?username="+uname+"&password="+passwd+"",true); 
     xmlObj.send(); 

     xmlObj.onreadystatechange = function() 
     { 
      if (xmlObj.readyState == 4) 
      { 
       var newData = xmlObj.responseText; 
       var authData = JSON.parse(newData); 
       var auth = authData.auth; 

       if (auth == 0) { 
        **window.location = "http://www.google.com";** 
       } else { 
        alert ("Login failed"); 
       } 
      } 
     }; 
    } 
+0

window.locationの前にconsole.logを追加して、その行が到達しているかどうかを確認してください。 –

+0

console.log(auth)を追加してください。あなたのvar auth = authData.authの後。サーバーが戻ってきたものを見てください。これはサーバー側のエラーかもしれません..また、なぜあなたはwindow.locationの周りに**(アスタリスク)を持っていますか? – rubberchicken

+0

それは行に達し、authはゼロです。サーバーからの応答は問題ありません。 window.location行は実行されますが、ページのリダイレクトは機能しません。これは15回に1回動作します。アスタリスクは太字で強調表示されていた – user3616977

答えて

0

これに対する答えは、HTMLスクリプトの単純な変更でした。 html呼び出しで戻り関数()を追加します。これはクロムにコールバック関数がある場合には不可欠です。

<button onclick="return loginNow(this.form);">Login</button> 
関連する問題