Voer PHP-functie uit met onclick

Ik ben op zoek naar een eenvoudige oplossing om een PHP-functiealleen aan te roepen wanneer op een-tagwordt geklikt.

PHP:

function removeday() { ... }

HTML:

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

UPDATE:de html- en PHP-code staan in hetzelfde PHP-bestand


Antwoord 1, autoriteit 100%

Begrijp eerst dat je drie talen hebt die samenwerken:

  • PHP: het werkt alleen door de server en reageert op verzoeken zoals klikken op een link (GET) of het verzenden van een formulier (POST).

  • HTML & JavaScript: het werkt alleen in iemands browser (exclusief NodeJS).

Ik neem aan dat je bestand er ongeveer zo uitziet:

<!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>

Omdat PHP alleen reageert op verzoeken (GET, POST, PUT, PATCH en DELETE via $_REQUEST), is dit hoe je een PHP-functie moet uitvoeren, ook al staan ze in hetzelfde bestand. Dit geeft u een beveiligingsniveau: “Moet ik dit script voor deze gebruiker uitvoeren of niet?”.

Als u de pagina niet wilt vernieuwen, kunt u een verzoek indienen bij PHP zonder te vernieuwen via een methode genaamd Asynchronous JavaScript and XML (AJAX).

Dat kun je wel opzoeken op YouTube. Zoek gewoon op “jquery ajax”

Ik raad Laravel aan iedereen nieuw aan om het goed te starten: http://laravel.com/


2, Autoriteit 28%

In JavaScript, maak een AJAX-functie,

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

Bel vervolgens vanuit HTML,

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

en in uw Ajax.php,

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

3, Autoriteit 7%

U moet dit doen via Ajax . Ik heb het zwaar aangelegd dat je jQuery gebruikt om dit gemakkelijker voor je te maken ….

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

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


4, Autoriteit 7%

het kan gedaan worden en met nogal eenvoudige PHP
Als dit uw knop

is

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

En dit is uw PHP-code

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

de code get wordt aangeroepen wanneer verzenden wordt gepost, wat gebeurt wanneer op de knop wordt geklikt.


Antwoord 5, autoriteit 3%

Oplossing zonder pagina opnieuw te laden

<?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>

6

Probeer zoiets te doen:

<!--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>

Antwoord 7

Dit is de gemakkelijkst mogelijke manier. Als het formulier via de post wordt gepost, voer dan de php-functie uit. Merk op dat als je de functie asynchroon wilt uitvoeren (zonder de pagina opnieuw te hoeven laden), je AJAX nodig hebt.

<form method="post">
    <button name="test">test</button>
</form>
    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>

Antwoord 8

Probeer dit, het zal goed werken.

<script>
function echoHello(){
 alert("<?PHP hello(); ?>");
 }
</script>
<?PHP
FUNCTION hello(){
 echo "Call php function on onclick event.";
 }
?>
<button onclick="echoHello()">Say Hello</button>

Other episodes