Как вызвать php методы из js? - PullRequest
3 голосов
/ 23 марта 2019

Я работаю над проектом службы Counter, где мне нужно контролировать поток клиентов, каждый клиент может иметь 5 минут в счетчике. С другой стороны, система должна контролировать 5 счетчиков.

Вот моя попытка решить проблему. Посмотри на мой MWE:

 //this is part of the code where I set the timer for each counter. 
function increment() {
      if (running == 1) {
        setTimeout(function() {
          time++;
          var mins = Math.floor(time / 10 / 60);
          var secs = Math.floor(time / 10);
          var tenths = time % 10;
          if (mins == 5) {
            //after 5 mins is over the system should call php deQueue() method to dequeue the current and point out to next customer.
            document.getElementById("message").innerHTML = "Currently, Counters are available... Next Customer..."
            deQueue();
           //this is my php method.
            available();
          }
          document.getElementById("timer").innerHTML = mins + ":" + secs + ":" + tenths;
          increment();
        }, 100)
      }
}
//And this is my php file.

<?php
      	public function deQueue(){
    		if (!$this->isEmpty()) {
    			$this->front = ($this->front+1) %5;
    			$this->size--;
    		}else{
    			echo "The Counter is empty! <br>";
    		}
    	}
    
    ?>

Ответы [ 2 ]

2 голосов
/ 23 марта 2019

Теперь вам нужно будет использовать ajax-запрос к вашему php-файлу следующим образом:

function increment() {
    if (running == 1) {
        setTimeout(function() {
            time++;
            var mins = Math.floor(time / 10 / 60);
            var secs = Math.floor(time / 10);
            var tenths = time % 10;
            if (mins == 5) ajaxDequeue(mins);
            document.getElementById("timer").innerHTML = mins + ":" + secs + ":" + tenths;
            increment();
        }, 100)
    }
}

function ajaxDequeue(mins){ 
    $.ajax({  
        url: 'ajax.php?minutes=' + mins,  
        beforeSend: function() 
        {
            document.getElementById("message").innerHTML = "Currently, Counters are available... Next Customer..."
        },  
        success: function(response)
        {
            document.getElementById("message").innerHTML = response;
        }      
    });
}

, затем в вашем файле ajax.php установите его для проверки значения минут

<?php
    $minutes = $_GET["minutes"];

    if (isset($minutes)) deQueue();

    public function deQueue(){
            if (!$this->isEmpty()) {
                $this->front = ($this->front+1) %5;
                $this->size--;
            }else{
                echo "The Counter is empty! <br>";
            }
        }
?>
0 голосов
/ 23 марта 2019

Мне кажется, вы пытаетесь напрямую вызвать функцию PHP из JavaScript.Чтобы описать это простыми словами, этим двум языкам обычно требуется дополнительный слой для взаимодействия, называемый HTTP , потому что PHP работает на веб-сервере, а JavaScript запускается на веб-браузере.

Для выполненияФункция JavaScript «по истечении определенного времени» вы можете использовать setTimeout .

Чтобы открыть сообщение на PHP (веб-сервер), вы можете использовать AJAX .

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