Подтвердить что ты не робот

Выполнить функцию PHP с помощью onclick

Я ищу простое решение для вызова функции PHP только при нажатии a-tag.

PHP:

function removeday() { ... }

HTML:

<a href="" onclick="removeday()" class="deletebtn">Delete</a>

UPDATE: код html и PHP находятся в одном файле PHP

4b9b3361

Ответ 1

Во-первых, поймите, что у вас есть три языка, работающих вместе:

  • PHP: он запускается только сервером и отвечает на запросы, такие как нажатие на ссылку (GET) или отправка формы (POST).

  • HTML & JavaScript: он работает только в чьем-то браузере (исключая NodeJS).

Я предполагаю, что ваш файл выглядит примерно так:

<!DOCTYPE HTML>
<html>
<?php
  function runMyFunction() {
    echo 'I just ran a php function';
  }

  if (isset($_GET['hello'])) {
    runMyFunction();
  }
?>

Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>

Поскольку PHP отвечает только на запросы (GET, POST, PUT, PATCH и DELETE через $ _REQUEST), именно так вы должны запускать функцию PHP, даже если они находятся в одном файле. Это дает вам определенный уровень безопасности: "Должен ли я запускать этот скрипт для этого пользователя или нет?".

Если вы не хотите обновлять страницу, вы можете сделать запрос к PHP без обновления с помощью метода, называемого асинхронным JavaScript и XML (AJAX).

Это то, что вы можете посмотреть на YouTube, хотя. Просто найдите "JQuery AJAX"

Я рекомендую Laravel любому новичку, чтобы начать правильно: http://laravel.com/

Ответ 2

В javascript выполните функцию ajax,

function myAjax() {
      $.ajax({
           type: "POST",
           url: 'your_url/ajax.php',
           data:{action:'call_this'},
           success:function(html) {
             alert(html);
           }

      });
 }

Затем вызовите из html,

<a href="" onclick="myAjax()" class="deletebtn">Delete</a>

И в вашем ajax.php,

if($_POST['action'] == 'call_this') {
  // call removeday() here
}

Ответ 3

Вам нужно будет сделать это через AJAX. Я HEAVILY рекомендую вам использовать jQuery, чтобы сделать это проще для вас....

$("#idOfElement").on('click', function(){

    $.ajax({
       url: 'pathToPhpFile.php',
       dataType: 'json',
       success: function(data){
            //data returned from php
       }
    });
)};

http://api.jquery.com/jQuery.ajax/

Ответ 4

Это можно сделать и с довольно простым php если это ваша кнопка

<input type="submit" name="submit>

и это ваш php-код

if(isset($_POST["submit"])) { php code here }

код вызывается при отправке отправки, который происходит при нажатии кнопки.

Ответ 5

Попробуйте сделать что-то вроде этого:

<!--Include jQuery-->
<script type="text/javascript" src="jquery.min.js"></script> 

<script type="text/javascript"> 
function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 
</script>

<a href="#" onclick="doSomething();">Click Me!</a>

Ответ 6

Решение без перезагрузки страницы

<?php
  function removeday() { echo 'Day removed'; }

  if (isset($_GET['remove'])) { return removeday(); }
?>


<!DOCTYPE html><html><title>Days</title><body>

  <a href="" onclick="removeday(event)" class="deletebtn">Delete</a>

  <script>
  async function removeday(e) {
    e.preventDefault(); 
    document.body.innerHTML+= '<br>'+ await(await fetch('?remove=1')).text();
  }
  </script>

</body></html>

Ответ 7

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

<form method="post">
    <button name="test">test</button>
</form>

    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>

Ответ 8

Попробуйте это будет работать нормально.

<script>
function echoHello(){
 alert("<?PHP hello(); ?>");
 }
</script>

<?PHP
FUNCTION hello(){
 echo "Call php function on onclick event.";
 }

?>

<button onclick="echoHello()">Say Hello</button>