2016-09-26 113 views
0

我写了一个简单的登录页面,向后端发送一个Ajax请求。但是,我无法在成功登录时重定向页面。重定向工作15次,不知道为什么会发生这种情况。我试过所有不同的重定向可能性,比如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

附加的console.log,看看是否有线路达到 –

+0

添加的console.log(AUTH);在你的var auth = authData.auth之后;看看服务器发回了什么..这可能是一个服务器端错误..也为什么你有**(星号)围绕window.location? – rubberchicken

+0

它到达线并且auth为零。服务器的响应很好。 window.location行被执行,但页面重定向不起作用。它每15次工作一次。星号用粗体突出显示 – user3616977

回答

0

答案就是HTML脚本的一个简单变化。 在html调用中添加return函数()。如果你在chrome中有回调函数,这是非常重要的。 window.location的前

<button onclick="return loginNow(this.form);">Login</button>