Ajax только отображение на обновлении страницы не работает? - PullRequest
0 голосов
/ 09 мая 2011

Я пытаюсь создать страницу, отображающую вывод консоли почти в реальном времени, я перепробовал много вещей, но ни одна из них, похоже, не работает, вот мой последний код.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 

<html> 
<head> 
<title>CP</title> 
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
function update() {
    $.ajax({
        url: "read.php",
        cache: false,
        success: function(html){            
            if(html == ohtml) {
                alert(html+" ---- "+ohtml);
            } else {
                alert(html+" ---- "+ohtml);
                var ohtml = html;
                $("#consoleOP").append(html+"<br />");  
            }
        }
    });
}

</script>
</head> 
<body> 
   <div style='width: 800px; margin-left: auto; margin-right: auto;'><p>
   <input type="button" value="Refresh" onclick="update()" /></p> 
<div id="consoleOP"></div> 
</div>
</body> 
</html>

Файл 'read.php' выводит последнюю строку журнала консоли, Ajax запрашивает страницу и добавляет ее в div каждый раз, когда на нее нажимают, даже если это одна и та же строка. Я хотел бы отображать только новые строки, а не дубликаты.

При запуске alert () выводит «HTMLHTMLHTMLHTML ---- undefined».

Спасибо! Justin

Ответы [ 2 ]

1 голос
/ 09 мая 2011
else {
            alert(html+" ---- "+ohtml);
            var ohtml = html;  <-- I am local and you are treating me as a global
            $("#consoleOP").append(html+"<br />");  
        }

Так что вам нужно заставить его работать в области действия

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> 

<html> 
<head> 
<title>CP</title> 
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">


jQuery(function(){

    var ohtml = null;

    function update() {
        $.ajax({
            url: "read.php",
            cache: false,
            success: function(html){            
                if(html == ohtml) {
                    alert(html+" ---- "+ohtml);
                } else {
                    alert(html+" ---- "+ohtml);
                    ohtml = html;
                    $("#consoleOP").append(html+"<br />");  
                }
            }
        });
    }

    jQuery("#btnRefresh").click( update );

});

</script>
</head> 
<body> 
   <div style='width: 800px; margin-left: auto; margin-right: auto;'><p>
   <input type="button" id="btnRefresh" value="Refresh" /></p> 
<div id="consoleOP"></div> 
</div>
</body> 
</html>
0 голосов
/ 09 мая 2011

Я думаю, что вы пропустили инициализацию переменной ohtml, и javascript присваивает ей undefined, так что вы получаете указанный результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...