2011-09-20 47 views
0

在以下代码中,成功登录后,我试图打开admin.htm。内容使用AJAX加载到相同的页面,我怎样才能在新窗口中打开它,但在错误的情况下保留原始窗口中的任何错误消息?成功ajax登录时打开一个新窗口

login.htm

<form> 
    Username:<input type="text" name= "username" size="15" /> 
    Password:<input type="password" name= "passwrd" size="15" /> 
    <input name="submit" type = "button" onClick = "getdata('login.php','display',username.value,passwrd.value)" value = "Login" /> 
    </form>  

    <div id="display"></div> 

login.js

function getdata(dataSource, divID, usrname, pwd) { 
    if (xhr) { 
     var obj = document.getElementById(divID); 
     var requestbody = "username=" + encodeURIComponent(usrname) + "&password=" + encodeURIComponent(pwd); 
     xhr.open("POST", dataSource, true); 
     xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
     xhr.onreadystatechange = function() { 
      if (xhr.readyState == 4 && xhr.status == 200) { 
       obj.innerHTML = xhr.responseText; 
      } 
     } 
     xhr.send(requestbody); 
    } 
} 
+2

编辑您的标签。 PHP与windows无关。这是服务器端语言 –

+0

你的缩进是哭泣 - 不,_screaming_ - 出于一些爱和关注。看中它的花哨? –

+0

@Col:我认为'php'是什么想要从问题中删除。 Login.php是一个完整的红色鲱鱼,而OP似乎并不明白HTML和Javascript和PHP是不同的。 –

回答

1

形式故意使用AJAX来显示你在页面上的结果...

要在新页面中打开结果,请删除onclick和脚本并提供一个目标:

<form action="login.php" target="_blank" method="post"> 
Username:<input type="text" name= "username" size="15" /> 
Password:<input type="password" name= "passwrd" size="15" /> 
<input type="submit" value = "Login" /> 
</form> 

如果你想要的是不看表格提交后,包的形式在显示DIV:

<div id="display"> 
    <form>..... 
    </form> 
</div> 

UPDATE:

to get the error message into the page, do 

if (xhr.readyState == 4 && xhr.status == 200) { 
    var text = xhr.responseText; 
    if (text.indexOf("You must") == 0) obj.innerHTML = text; 
    else window.open(text,"_blank") 
} 

<?php 
$usernam = $_POST["username"]; 
$pwd = $_POST["password"]; 
if (empty($usernam) || empty($pwd)) { 
    echo "You must enter both username and password to login."; 
} else { 
    echo 'admin.htm'; 
} 
?> 
+0

但它会在新窗口中显示消息(如果有任何字段为空)和admin.htm,但我需要在窗体下显示错误消息,但在新窗口中显示admin.htm – jisa

+0

请参阅更新。 – mplungjan

+0

感谢它解决了我的问题 – jisa