Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как сделать инкремент на стороннее сервера через setInteval и ajax? (https://javascript.ru/forum/misc/84276-kak-sdelat-inkrement-na-storonnee-servera-cherez-setinteval-i-ajax.html)

voraa 27.07.2022 16:13

Цитата:

Сообщение от Olga27
Вообщем обозначить как-то глобальную переменную которая будет увеличиваться каждые несколько секунд на php.

После того, как скрипт php отработал, все пропадает. Нет больше у него никаких переменных, ни глобальных, ни локальных. Он не висит в памяти постоянно.

Olga27 27.07.2022 18:20

Все уже не надо. Решила инкремент делать на javascript, а на php отправлять только результат. Работает.
javascript:
<html>
  <head>
  <title></title>

  </head>
  <body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.js"></script>

<div id="result">0</div>
<script type="text/javascript">
$(function(){
var interval = 3000;  
function doAjax(i) {

    $.ajax({
            type: 'POST',
            url: 'increment.php',
            data: "num="+i,
            dataType: 'json',
            success: function (response) {
               if(response.result=="success")
               {
                    	$('#result').html(response.num);  
               } 
            },
            complete: function (data) {
                 
                    
                    setTimeout(doAjax, interval,i + 1);
            }
    });
}
setTimeout(doAjax, interval,1);
});
</script>

    </script>
  </body>
</html>

PHP
<?php
$num = $_POST["num"];

echo json_encode(array(
            'result' 	=> 'success',
            'num' => $num
   ));
?>

Nexus 27.07.2022 18:25

Olga27, если это окончательный вид PHP скрипта, то он бесполезен чуть более, чем полностью.

Olga27 27.07.2022 23:06

Цитата:

если это окончательный вид PHP скрипта, то он бесполезен чуть более, чем полностью.
Какие ваши агрументы, что этот код бесполезен, другими словами как сделать его полезным? Альтернативный вариант будет?

Nexus 28.07.2022 00:04

Olga27,
Цитата:

Сообщение от Olga27
Какие ваши агрументы, что этот код бесполезен

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

Без сервера ваш код может выглядеть так:
<html>
<head>
    <title>Counter</title>
</head>
<body>
    <div id="result"></div>

    <script type="text/javascript">
        (function tick(counter) {
            document.getElementById('result').innerHTML = counter;

            setTimeout(tick, 3000, ++counter);
        })(0);
    </script>
</body>
</html>

Olga27 28.07.2022 00:47

Nexus,
Это не весь код на сервере json документ который открывается.
$ourData = file_get_contents("data.json");

$outcls=json_decode($ourData,true);

Потом, туда будут вноситься данные и документ будет перезаписываться.
Цитата:

Array
(
[response] => Array
(
[0] => Array
(
[title] =>
[text] =>


)
[1] => Array
(
[title] =>
[text] =>


)
)
....
Счетчик который увеличивается в JS это элемент массива response.


Часовой пояс GMT +3, время: 20:41.