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)

Olga27 27.07.2022 15:19

Как сделать инкремент на стороннее сервера через setInteval и ajax?
 
Мне нужно отправить число сделать в php инкремент, вернуть значение отправить его повторно потом еще раз прибавить единицу в PHP и все это через setInterval? Как это сделать? Максимум мне удалось прибавить единицу, больше число не увеличивается
<html>
  <head>
  <title></title>
  <style>
    body
    {
      margin: 0;
    }
    canvas
    {
      width:100%;
      height:100%
    };
  </style>
  </head>
  <body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.js"></script>
   
   
    <div id="result"></div>
    <script>
     
      var index = 0;
      function ajax_query(filename,index)
        {
        ind = index;
        
        $.ajax({
                    type: "POST",
                    url: 'test.php',
                    data: "flname="+filename+"&num="+ind,
                    dataType: "json",
                    
                    success: function(response)
                    {
                      
                       if(response.result=="success")
                       {
                       
                         index = response.num;
                         jQuery('#result').html(index);
                        
                       }
                         
                      
                   }
               });
              console.log(index); 
               
        }
      function main()
      {
       
        setInterval(ajax_query,1000,'ex.txt',index);
      }
      main();
      
      
     
    </script>
  </body>
</html>


Код php:
<?php


$num = $_POST["num"];
$flname = $_POST["flname"];

$num++;

 file_put_contents($flname,$num."\n",FILE_APPEND);
 
 
echo json_encode(array(
            'result' 	=> 'success',
            'num' => $num
   ));
?>

ksa 27.07.2022 15:52

Цитата:

Сообщение от Olga27
и все это через setInterval?

В этом он тебе не поможет...

Я пока не совсем понял... Сколько раз ты хочешь увеличивать тот "счетчик"?

ksa 27.07.2022 15:56

Цитата:

Сообщение от Olga27
Мне нужно отправить число сделать в php инкремент, вернуть значение отправить его повторно потом еще раз прибавить единицу в PHP

Т.е. некое число должно трижды побывать на сервере, каждый раз там увеличиваясь на единицу?

И в чем сакральный смысл этого действа? :blink:

Olga27 27.07.2022 15:56

Цитата:

Я пока не совсем понял... Сколько раз ты хочешь увеличивать тот "счетчик"?
Я хочу чтобы счетчик просто увеличивался и все. Неважно сколько раз.

ksa 27.07.2022 15:57

Цитата:

Сообщение от Olga27
Я хочу чтобы счетчик просто увеличивался и все.

Это одна задача...

Но посылать, дождавшись ответа - это уже другая задача.

Olga27 27.07.2022 15:58

Цитата:

И в чем сакральный смысл этого действа?
Мне нужно обозначить переменную которая будет увеличиваться на сервере php. Мне все равно, пускай будет это сделано через Refresh: 5 секунд. Вообщем обозначить как-то глобальную переменную которая будет увеличиваться каждые несколько секунд на php.

voraa 27.07.2022 15:59

У вас меняется только index - параметр функции. По сути - локальная переменная
А глобальная, описанная в строке 23 никак не меняется.

<html>
  <head>
  <title></title>
  <style>
    body
    {
      margin: 0;
    }
    canvas
    {
      width:100%;
      height:100%
    };
  </style>
  </head>
  <body>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.js"></script>
    
    
    <div id="result"></div>
    <script>
      
      var index = 0;
      function ajax_query(filename)
        {         
        $.ajax({
                    type: "POST",
                    url: 'test.php',
                    data: "flname="+filename+"&num="+index,
                    dataType: "json",
                     
                    success: function(response)
                    {
                       
                       if(response.result=="success")
                       {
                        
                         index = response.num;
                         jQuery('#result').html(index);
                         
                       }
                          
                       
                   }
               });
              console.log(index);
                
        }
      function main()
      {
        
        setInterval(ajax_query,1000,'ex.txt');
      }
      main();
       
       
      
    </script>
  </body>
</html>

Olga27 27.07.2022 16:01

Я не могу понять глобальную переменную можно обозначить в PHP чтобы через Refresh 5 секунд, через ajax или еще как-нибуть увеличивалось?

voraa 27.07.2022 16:07

PHP вообще нет дела до ваших переменных. Он получает какие то данные, и все. Он понятия не имеет откуда они взялись. И передает данные, и ему совершенно побоку куда вы их засуните, в глобальную или локальную переменную

ksa 27.07.2022 16:12

Цитата:

Сообщение от Olga27
Мне нужно обозначить переменную которая будет увеличиваться на сервере php. Мне все равно, пускай будет это сделано через Refresh: 5 секунд.

И не важно успешно сервер то сделал или нет?
Не важно как долго шел ответ от сервера?

Если так - пойдет и setInterval()...


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