1

好的,所以我遇到了这个问题,而且我对 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,我需要 street.php 去一个不同的 URL。

这可能吗?

我尝试使用 header("Location : blabla"),但这不起作用,因为它只重定向streetsdo.php 页面而不是脚本运行的streets.php,并且我卡在了框架中。

编辑 这个脚本是由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>
4

2 回答 2

0

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

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

经过

if(http.responseText == 'finished'){
    window.location.href = '/myotherpage.php'
} else{
    document.getElementById('result').innerHTML = http.responseText;
}
于 2013-10-24T19:46:34.750 回答
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>`
于 2013-10-24T18:59:01.280 回答