Εκτέλεση συνάρτησης PHP με onclick

Ψάχνω για μια απλή λύση για την κλήση μιας PHP συνάρτησης μόνο όταν γίνεται κλικ σε μια ετικέτα.

PHP:

function removeday() { ... }

HTML:

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

ΠΡΟΗΓΗΣΗ: ο κώδικας html και ο κώδικας PHP βρίσκονται στο ίδιο αρχείο PHP

Λύση

Πρώτον, καταλάβετε ότι έχετε τρεις γλώσσες που συνεργάζονται μεταξύ τους:

  • PHP: Απαντά σε αιτήματα όπως το κλικ σε έναν σύνδεσμο (GET) ή η υποβολή μιας φόρμας (POST).

  • HTML & JavaScript: (εκτός από το NodeJS).

Υποθέτω ότι το αρχείο σας μοιάζει κάπως έτσι:



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

Επειδή η PHP ανταποκρίνεται μόνο σε αιτήματα (GET, POST, PUT, PATCH και DELETE μέσω $_REQUEST), με αυτόν τον τρόπο πρέπει να εκτελέσετε μια συνάρτηση PHP, παρόλο που'βρίσκονται στο ίδιο αρχείο. Αυτό σας δίνει ένα επίπεδο ασφάλειας, "Πρέπει να τρέξω αυτό το σενάριο για αυτόν τον χρήστη ή όχι; ".

Εάν δεν θέλετε να ανανεώσετε τη σελίδα, μπορείτε να κάνετε ένα αίτημα στην PHP χωρίς ανανέωση μέσω μιας μεθόδου που ονομάζεται Ασύγχρονη JavaScript και XML (AJAX).

Αυτό όμως είναι κάτι που μπορείτε να αναζητήσετε στο YouTube. Απλά αναζητήστε "jquery ajax&quot,

Συνιστώ το Laravel σε όποιον είναι νέος για να ξεκινήσει σωστά: http://laravel.com/

Σχόλια (5)

Σε 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
}
Σχόλια (2)

Θα πρέπει να το κάνετε αυτό μέσω AJAX. Συνιστώ ανεπιφύλακτα να χρησιμοποιήσετε το 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)