我有一个AJAX代码,它从无线电表单中获取输入。 当服务器代码满足某种类型的if()条件时,它会被重定向到我网站的其他页面,例如 dashboard.php !
当它重定向时,我仍然会在 dashboard.php 上看到单选按钮表单! (未在该页面上编码......)
http://oi60.tinypic.com/30u7haq.jpg
对于重定向,我使用了php函数:
header('location:dashboard.php');
当代码重定向到dashboard.php时,我需要以某种方式清除响应或禁用响应
AJAX代码:
function sendid(attack)
{
var att;
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)
{
document.getElementById("result").innerHTML=xmlhttp.responseText;
document.getElementById("r1").checked = false
document.getElementById("r2").checked = false
}
}
xmlhttp.open("POST","battleuser2.php",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("att="+attack);
}
答案 0 :(得分:1)
您好我认为您需要在ajax完成后进行重定向,而不是在处理ajax请求的代码中...
尝试...
window.location.href = 'dashboard.php';
在你的ajax成功处理程序......
并删除...
header('location:dashboard.php');
你的ajax处理程序中的
更新:
Ajax处理程序(battleuser2.php)
if(true){
echo 'success';
}else{
echo 'fail';
}
exit;
Ajax完成:
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(xmlhttp.resonseText == 'success'){
window.location = 'dashboard.php?msg=You Won!';
}else{
window.location = 'dashboard.php?msg=You Lost!';
}
}
Dashboard.php ..
if(isset($_GET['msg']))
echo $_GET['msg'];
答案 1 :(得分:1)
您的ajax功能未将全新页面加载到浏览器中,因此浏览器不会自动处理ajax响应中的标头以进行重定向。因此,从您的Ajax调用,服务器无法自动使浏览器转到新页面。
如果您希望这样做,您将需要停止使用ajax调用并只使用常规表单帖子(服务器返回响应页面,该页面将被处理以进行重定向)。
或者,您可以在自己的javascript中手动重定向,以处理ajax调用的结果。在javascript代码中自己动手做如下:
if (xmlhttp.readyState==4 && xmlhttp.status==200) {
window.location = 'dashboard.php';
}