0

私は現在、監視を可能にするPHPスクリプト/ AJAXを設計しています。実際、イントラネットで、その日にデータベースに保存されたアクションのリストを取得したいと考えています。そのため、メンバーを非同期で表示しようとする瞬間にリクエストを行いましたが、機能しません。

実際、記録されたデータをリアルタイムで観察できるようにする必要があるため、テスト用にメンバーを表示し、この日のアクションのアジェンダを復元するように調整した後、非同期に (リロードなしで) 表示したかったのです。

だから私はこのコードをやった:

script.js では、これを入れたヘッダーにあります:

function writeInDiv(text){
    var objet = document.getElementById('monitoring');
    objet.innerHTML = text;
}

function ajax()
{
    var xhr=null;

    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("GET", "ajax.php", false);
    xhr.send(null);
    writeInDiv(xhr.responseText);
        setInterval("ajax()",5000);
}

次に、コードを表示する他の2つのページがあり、次のものが含まれています。

<button onclick='javascript:ajax()'>Afficher</button>
                <div id="monitoring"></div>


<?php

$requette = mysql_query("SELECT * FROM gestionnaire ORDER BY ID DESC LIMIT 0,10");
$result=mysql_query($requette) or die;
While($donne = mysql_fetch_array($requette))
{
$message = htmlentities($donne['nom']);
$pseudo = htmlentities($donne['prenom']);
?>
<b><?php var_dump($donnee); echo $pseudo; ?>:</b> <?php echo $message; ?><br />
<?php
}
?>

問題は、何も表示されないことです。テーブルにはこれらのフィールドがいっぱいですが、エラーメッセージさえありませんが、var_dumpこのような場合は何もありません。

私は知りません、またはそれが由来する可能性があります。

4

1 に答える 1

3

Ajax呼び出しは非同期です。おそらく、responseTextをwriteInDivに渡した時点で呼び出しが終了していません。次のことを試してください。

function writeInDiv(text){
    var objet = document.getElementById('monitoring');
    objet.innerHTML = text;
}

function ajax()
{
    var xhr=null;

    if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
    }
    else if (window.ActiveXObject)
    {
        xhr = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xhr.open("GET", "ajax.php", false);
    xhr.send(null);
    xhr.onreadystatechange=function()
    {
        if (xhr.readyState==4 && xhr.status==200)
        {
             writeInDiv(xhr.responseText);
        }
    }
    setTimeout("ajax()",5000);
}

またはjQueryを使用:

function ajax() {
    $('#monitoring').load('ajax.php');
    setTimeout("ajax()",5000);
}

また、スペルを間違えたと思いvar_dump($donnee);ますvar_dump($donne);

于 2012-09-07T16:03:53.547 に答える