2

私は自分より進んでいると思いますが、PHPファイルから読み取るためにAJAXチュートリアルを試しました。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 に答える