как обновить div в той же позиции, избегая повторения строки - PullRequest
0 голосов
/ 13 апреля 2019

необходимо обновить div с данными с сервера.сервер отправляет данные с событиями, отправленными сервером.

все работает нормально, но данные отображаются в новых строках.Мне нужно обновить тот же div в той же позиции, не добавляя больше строк.

Это HTML-страница:

<!DOCTYPE html>
<html>
    <head>
    </head>
    <body>

        <div id="result">Loading data. Please, wait...</div>

        <script type="text/javascript">
            if(typeof(EventSource) !== "undefined") {
                var source = new EventSource("demo_sse.php");

                source.addEventListener('message', function(e) {
                    document.getElementById("result").innerHTML += event.data + "<br>";
                }, false);

                source.addEventListener('open', function(e) {
                    // Connection was opened.
                    //alert('Connection opened');
                }, false);

                source.addEventListener('close', function(e) {
                    // Connection was opened.
                    alert('Connection closed');
                }, false);

                source.addEventListener('error', function(e) {
                    if (e.readyState == EventSource.CLOSED) {
                    // Connection was closed.
                        alert('Connection closed');
                    }
                }, false);

            } else {
                document.getElementById("result").innerHTML = "Sorry, your browser does not support server-sent events...";
            }
        </script>
    </body>
</html>

, и это php-файл:

<?php
header('Content-Type: text/event-stream');
header('Cache-Control: no-cache');

$time = date('r');
echo "retry: 1000\n";
echo "data: The server time is: {$time}\n\n";
//error_log('XXXX');
flush();
?>

1 Ответ

0 голосов
/ 13 апреля 2019

Измените строку на эту:

source.addEventListener('message', function(e) {
                    document.getElementById("result").innerHTML = event.data + "<br>";
                }, false);
...