Execute PHP function with onClick

2019-01-01 07:12发布

问题:

I am searching for a simple solution to call a PHP function only when a-tag is clicked.

PHP:

function removeday() { ... }

HTML:

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

UPDATE: the html and PHP code are in the same PHP file

回答1:

First, understand that you have three languages working together.

  • PHP: Is only run by the server and responds to requests like clicking on a link (GET) or submitting a form (POST).

  • HTML & JavaScript: Is only run in someone\'s browser (excluding NodeJS).

I\'m assuming your file looks something like:

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

Because PHP only responds to requests (GET, POST, PUT, PATCH, and DELETE via $_REQUEST), this is how you have to run a PHP function even though they\'re in the same file. This gives you a level of security, \"Should I run this script for this user or not?\".

If you don\'t want to refresh the page, you can make a request to PHP without refreshing via a method called Asynchronous JavaScript and XML (AJAX).

That is something you can look up on YouTube though. Just search \"jquery ajax\"

I recommend Laravel to anyone new to start off right: http://laravel.com/



回答2:

In javascript, make an ajax function,

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

      });
 }

Then call from html,

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

And in your ajax.php,

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


回答3:

You will have to do this via AJAX. I HEAVILY reccommend you use jQuery to make this easier for you....

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

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

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



回答4:

It can be done and with rather simple php if this is your button

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

and this is your php code

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

the code get\'s called when submit get\'s posted which happens when the button is clicked.



回答5:

Try to do something like this:

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

This is the easiest possible way. If form is posted via post, do php function. Note that if you want to perform function asynchronously (without the need to reload the page), then you\'ll need AJAX.

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

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


回答7:

Try this it will work fine.

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

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

?>

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


标签: php onclick