服务器进程完成后清除ajax响应

时间:2014-05-18 15:20:46

标签: javascript php ajax

我有一个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);

}

2 个答案:

答案 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';
}