Повторите функцию PHP каждые 2 секунды - PullRequest
0 голосов
/ 27 июня 2018

Итак, у меня есть код, где число извлекается из текстового файла и отображается через HTML.

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

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

PHP код:

<?php
    $file = "num.txt"; //Path to your *.txt file
    $contents = file($file);
    $num = implode($contents);
?>

код JavaScript. По сути, он получает значение PHP и выводит его в html.

document.getElementById("num").innerHTML = '<?php echo $num; ?>';

Имейте в виду, я не хочу обновлять страницу. Просто переменная.


РЕДАКТИРОВАТЬ: PHP-код - Получение ошибки - Примечание: неопределенный индекс: keynum в C: \ xampp \ htdocs \ num.php в строке 3

Вот код PHP

<?php
    $keynum = $_POST['keynum'];
    $post = "INSERT INTO post (keynum) VALUES ($keynum)";
    $fileLocation = getenv("DOCUMENT_ROOT") . "/num.txt";
    $file = fopen($fileLocation,"w");
    $content = $keynum;
    fwrite($file,$content);
    fclose($file);
    echo 'Response';
    die();
 ?>

Ответы [ 5 ]

0 голосов
/ 27 июня 2018

get_nbr.php

 <?php
 $file = "num.txt"; //Path to your *.txt file
 $contents = file($file);
 $num = implode($contents);
 echo $num;
 ?>

index.php

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!---trigger get_nbr() on page load on an infinite loop every two seconds -->
<body onload="setInterval(get_nbr, 2000)">
<script>
  function get_nbr() {
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
  if (this.readyState == 4 && this.status == 200) {
  document.getElementById("num").innerHTML = this.responseText;
  }
  };
  xhttp.open("GET", "get_nbr.php", true);
  xhttp.send();
  }
 </script> 
<p id="num"></p>
0 голосов
/ 27 июня 2018

или с JQuery:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

<script>
    setInterval(function(){
        $.ajax({url:"num.php", success:function(result){
            $("#num").html(result);
        }});
    }, 3000);
</script>

<textarea id="num"></textarea>
0 голосов
/ 27 июня 2018

вот так.

let url = ""; //whatever url your requesting.

setInterval(function(){
    var x = new XMLHttpRequest();
    x.open("GET" , url , true);
    x.onreadystatechange = function(){
        if(x.readyState == 4 && x.status == 200)
        {
             document.getElementById("num").innerHTML = x.responseText;
        }
    }
    x.send();
} , 2000);

- ОБНОВЛЕНИЕ, добавлено сообщение -

setInterval(function(){
        var x = new XMLHttpRequest();
        x.open("POST" , url , true);
        x.setRequestHeader("Content-Type" , "application/x-www-form-urlencoded");
        x.onreadystatechange = function(){
            if(x.readyState == 4 && x.status == 200)
            {
                 document.getElementById("num").innerHTML = x.responseText;
            }
        }
        x.send("postVar1=123");
    } , 2000);
0 голосов
/ 27 июня 2018

Вы можете достичь того, что хотите, используя XMLHttpRequest , например:

function updateData() {
  var xhttp = new XMLHttpRequest();
  
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      document.getElementById('num').innerHTML = this.responseText;
    }
  };      
  
  xhttp.open('GET', '/num.php', true);
  xhttp.send();
}

setInterval(updateData, 2000);
0 голосов
/ 27 июня 2018

Если вы хотите обновить переменную без обновления страницы, то вам нужно использовать асинхронный запрос. Это не обязательно должен быть AJAX, вы можете использовать встроенную функцию XMLHttpRequest().

Если вы хотите больше информации: https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/Synchronous_and_Asynchronous_Requests

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