2

我想我已经超越了自己,但我尝试了 AJAX 教程来读取 PHP 文件。PHP 文件只是有一个时间的 echo 语句,我想通过它来初始化一个 javascript 时钟。

但这是我第一次尝试 AJAX,我什至无法让它激活测试警报消息。

这是代码,它位于我的 PHP 页面的底部,位于所有 PHP 之后。

<script type='text/javascript'>
function CheckForChange(){
    //alert("4 and 4");
    //if (4 == 1){
        //setInterval("alert('Yup, it is 1')", 5000);

        //alert('Now it is changed');
    //}

    var ajaxReady = new XMLHttpRequest();
    ajaxReady.onreadystatechange = function(){
        if (ajaxReady.readystate == 4){
            //Get the data
            //document.getElementById('clocktxt').innerHTML = ajaxReady.responseText;
            alert("here");
            alert(ajaxReady.responseText);
        }
    }
    ajaxReady.open("GET","ServerTime.php",true);
    ajaxReady.send(null);
}

setInterval("CheckForChange()", 7000);
</script>

有人可以告诉我为什么这不起作用吗?不知道我做错了什么。

4

3 回答 3

1

您的代码中的问题是一个未大写的字母。(哎呀!)你检查ajaxReady.readystate; 你需要检查。ajaxReady.readyState

因为ajaxReady.readystate始终未定义,所以您的警报永远不会触发。

这是您的代码已修复且可以正常工作。


顺便说一句,您是否考虑过使用库来处理跨浏览器 XHR 的丑陋?jQuery 是你的朋友:

function CheckForChange(){
    $.get('ServerTime.php', function(data) {
        $('#clocktxt').text(data);
    });
}
于 2012-05-15T21:07:39.690 回答
0

你可能应该有类似的东西:

setInterval(CheckForChange, 7000);

在不相关的注释中,JavaScript 中的常见命名约定是函数和方法名称的第一个字母不大写,其余的都是驼峰式。即checkForChange()

于 2012-05-15T20:42:10.257 回答
0

我不确定您的代码的确切问题;这是我使用的——我相信它对你有用。(另外,它适用于更多浏览器)

var xhr = false;
function CheckForChange(){
    /* Create xhr, which is the making of the object to request an external file */
    if(window.XMLHttpRequest){
        xhr = new XMLHttpRequest();
    }else{
        if(window.ActiveXObject){
            try {
                xhr = new ActiveXObject("Microsoft.XMLHTTP");
            }catch(e){}
        }
    }
    /* End creating xhr */

    /* Retrieve external file, and go to a function once its loading state has changed. */
    if(xhr){
        xhr.onreadystatechange = showContents;
        xhr.open("GET", "ServerTime.php", true);
        xhr.send(null);
    }else{
        //XMLHTTPRequest was never created. Can create an alert box if wanted.
    }
    /* End retrieve external file. */

}

function showContents(){
    if(xhr.readyState==4){
        if(xhr.status==200){
            alert(xhr.responseText);
        }else{
            //Error. Can create an alert box if wanted.
        }
    }
}

setInterval(CheckForChange, 7000);
于 2012-05-15T20:48:47.393 回答