Izvedba funkcije PHP s funkcijo onclick

Iščem preprosto rešitev za klicanje funkcije PHP samo ob kliku na oznako a.

PHP:

function removeday() { ... }

HTML:

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

DOPOLNITE: koda html in PHP sta v isti PHP datoteki

Rešitev

Najprej se zavedajte, da so trije jeziki vzajemno povezani:

  • PHP: PHP: Deluje samo v strežniku in se odziva na zahteve, kot je klik na povezavo (GET) ali oddaja obrazca (POST).

  • HTML in JavaScript: PHP: Pošlji se s HTML in JavaScript: (razen NodeJS).

Predvidevam, da je vaša datoteka videti nekako takole:



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

Ker se PHP odziva samo na zahteve (GET, POST, PUT, PATCH in DELETE prek $_REQUEST), morate tako zagnati funkcijo PHP, čeprav sta v isti datoteki. To vam zagotavlja stopnjo varnosti, "Ali naj zaženem to skripto za tega uporabnika ali ne?".

Če ne želite osveževati strani, lahko zahtevo PHP-ju pošljete brez osveževanja z metodo, imenovano asinhroni JavaScript in XML (AJAX).

To si lahko ogledate na YouTubu. Poiščite "jquery ajax";

Laravel priporočam vsem novim uporabnikom za dober začetek: http://laravel.com/

Komentarji (5)

V javascriptu ustvarite funkcijo ajax,

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

      });
 }

Nato jo pokličite iz html,

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

In v vašem ajax.php,

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

To boste morali storiti prek AJAX. Priporočam, da uporabite jQuery, da vam to olajša....

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

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

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

Komentarji (4)