AJAX和PHP - 需要在满足某些条件后重定向PHP页面

时间:2013-10-24 18:36:40

标签: javascript php ajax redirect

好的,所以我遇到了这个问题,但我对Ajax还不是很了解,所以我真的不知道如何继续。

我有一个页面每隔7秒使用Ajax和Javascript运行刷新。 每次Ajax页面刷新时,它都会从我的数据库中的SQL值中删除一个。 当该值达到0时,我需要主php页面转到不同的URL。

以下代码位于streets.php上。 它调用streetsdo.php来显示信息。

<script>    
function findUser(str) {
    var dapage='streetsdo.php';
    var http;
    var myself = arguments.callee;
    if (window.XMLHttpRequest) {
        http = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        try {
            http = new ActiveXObject('Msxml2.XMLHTTP');
        } catch(e) {
            http = new ActiveXObject('Microsoft.XMLHTTP');
        }
    }
    if (http) {
        http.onreadystatechange = function() {
            if (/4|^complete$/.test(http.readyState)) {
                document.getElementById('result').innerHTML = http.responseText;
                setTimeout(function(){myself();}, 7000);
            }
        };
        http.open('POST',dapage,true);
        http.setRequestHeader('Content-type','application/x-www-form-urlencoded');
        http.send('req=".$uid."&req2=numb');

    }

}
</script>

这是执行刷新的代码。 在streetsdo.php上,MySQL查询基本上是倒计时。 一旦它达到0,我需要streets.php去一个不同的URL。

这可能吗?

我尝试使用标题(“位置:blabla”),但这不起作用,因为它只重定向streetsdo.php页面,而不是脚本运行的streets.php,我陷入了框架。 / p>

编辑此脚本由streets.php上的按钮激活。

<span id='result'><span class='Streets'>
<form method='post' action='streets.php'>

<input type='button' class='theButton' value='Start' onclick='findUser(this.value)'></form>
</span>

2 个答案:

答案 0 :(得分:0)

试试这个脚本:

`<script type="text/javascript">
var myTimer;
function ajaxData(){
    var result = document.getElementById("result");

    var hr = new XMLHttpRequest();
    hr.open("POST", "your php file.php", true);
    hr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var d = hr.responseText;
            for(var o in d){
                if(d[o].id){
                    result.innerHTML += '<p>'+d[o].id+'<br></p>';

                }
            }
        }
    }
    hr.send("your variable which the php will take as $_POST[]");
    result.innerHTML = "requesting...";
    myTimer = setTimeout('ajax_json_data()',7000);

}
</script>`

答案 1 :(得分:0)

当你的倒计时到零时,ajax调用必须返回一个特殊值。你检查它是否替换

document.getElementById('result').innerHTML = http.responseText;

通过

if(http.responseText == 'finished'){
    window.location.href = '/myotherpage.php'
} else{
    document.getElementById('result').innerHTML = http.responseText;
}