Как перезагрузить функцию javascript и перезагрузить нижний колонтитул на странице html без перезагрузки всей страницы? - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть main.page. php, который загружает функцию javascript, чтобы получить статус сервера вверх или вниз. Я хотел бы перезагружать эту функцию каждые 10 секунд, чтобы проверять состояние сервера и обновлять сообщение о состоянии в div нижнего колонтитула, обновляя нижний колонтитул, а не всю страницу.

main.page. php

<head>

<?php require_once 'inc/meta.php'; ?>

<?php require_once 'inc/css.php'; ?>

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">

  <script type="text/javascript">

    'use strict';

    function queryPlex (query) {
          return $.ajax({
          type: 'POST',
          url: 'inc/plex-api.php',
          cache: false,
          data: {'postData': query},
          dataType: 'json'
        });
    }

    $(document).ready(function () {
          getServerStatus();   
    });

    function getServerStatus () {

         const serverStatusDiv = $('#server-status-msg'); 
         const getServerStatus = queryPlex('/');
         getServerStatus.done(function (data) {
                 if (data) {     
                 serverStatusDiv.html(' <i style="color:green; font-style:normal;"> &nbsp;ONLINE <span style="color:green;" class="fas fa-fw fa-check-circle" data-fa-transform="grow-4"></span></i>');
                } else {     
                 serverStatusDiv.html(' <i style="color:red; font-style:normal;"> &nbsp;OFFLINE <span style="color:red;" class="fas fa-fw fa-exclamation-circle" data-fa-transform="grow-4"></span></i>');
                }
            });

         getServerStatus.fail(function () {  
         serverStatusDiv.html(' <i style="color:red; font-style:normal;"> &nbsp;OFFLINE <span style="color:red;" class="fas fa-fw fa-exclamation-circle" data-fa-transform="grow-4"></span></i>');
                    });    
}
   </script>

</head>

<body id="body_iframe"  onload="getServerStatus ()">

<!-- ============ Fixed Nav ============ -->

     <?php require_once 'inc/nav_main.php'; ?>

<!-- ============ Begin page content ============= -->


    <div id="container_iframe" style="background-color:black;">
          <iframe id="iframe" name="frame" frameBorder="0" scrollbar="no" src="./?page=media"></iframe>
        </div>


<!-- ============ Sticky Footer ============ -->

    <?php require_once 'inc/footer.php'; ?>

<!-- ============== Bootstrap core JavaScript  ================= -->

<script src="js/jquery.min.js" type="text/javascript"></script>

<?php require_once 'inc/javascripts.php'; ?>

</body>
</html>

нижний колонтитул. php

<!-- ============ Footer ============ -->

<div id="footer_iframe" class="bg-black">
  <div class="text-right">

    <!-- ============ Check Server Status ============ -->

    <p class="text-right">StreamNet Server: <span id="server-status-msg">&nbsp;checking status ....</span></p>  


  </div>
</div>

Как мне этого добиться?

Спасибо.

ОБНОВЛЕНИЕ

я обновил свою главную страницу. php

добавил setTimout к функции добавлен скрипт для перезагрузки div нижнего колонтитула.

 <script type="text/javascript">

    'use strict';

    function queryPlex (query) {
          return $.ajax({
          type: 'POST',
          url: 'inc/plex-api.php',
          cache: false,
          data: {'postData': query},
          dataType: 'json'
        });
    }

    $(document).ready(function () {
          getServerStatus();   
    });

    function getServerStatus () {

         const serverStatusDiv = $('#server-status-msg'); 
         const getServerStatus = queryPlex('/');
         getServerStatus.done(function (data) {
                 if (data) {     
                 serverStatusDiv.html(' <i style="color:green; font-style:normal;"> &nbsp;ONLINE <span style="color:green;" class="fas fa-fw fa-check-circle" data-fa-transform="grow-4"></span></i>');
                } else {     
                 serverStatusDiv.html(' <i style="color:red; font-style:normal;"> &nbsp;OFFLINE <span style="color:red;" class="fas fa-fw fa-exclamation-circle" data-fa-transform="grow-4"></span></i>');
                }
            });

         getServerStatus.fail(function () {  
         serverStatusDiv.html(' <i style="color:red; font-style:normal;"> &nbsp;OFFLINE <span style="color:red;" class="fas fa-fw fa-exclamation-circle" data-fa-transform="grow-4"></span></i>');
                    }); 

      setTimeout(getServerStatus, 10000);

}
   </script>

<script>
$(document).ready(function(){
    setInterval(function(){
        $("#footer").load('inc/footer.php')
    }, 10000);
});
</script>

также я удалил код php загрузить нижний колонтитул. php в конце главной страницы. php.

<body id="body_iframe"  onload="getServerStatus ()">

<!-- ============ Fixed Nav ============ -->

     <?php require_once 'inc/nav_main.php'; ?>

<!-- ============ Begin page content ============= -->


    <div id="container_iframe" style="background-color:black;">
          <iframe id="iframe" name="frame" frameBorder="0" scrollbar="no" src="./?page=media"></iframe>
        </div>


<!-- ============ Sticky Footer ============ -->
<div id="footer"></div>


<!-- ============== Bootstrap core JavaScript  ================= -->

<script src="js/jquery.min.js" type="text/javascript"></script>

<?php require_once 'inc/javascripts.php'; ?>

</body>

но теперь мой нижний колонтитул больше не загружается?

1 Ответ

0 голосов
/ 18 февраля 2020

Вы можете использовать setInterval

setInterval (getServerStatus, 10000);

setInterval

А для нижнего колонтитула вы можете просто заменить содержание используя jQuery.

$('#server-status-msg').html('Server is Up');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...