使用 onclick 执行 PHP 函数

IT技术 javascript php ajax onclick
2021-02-05 03:33:50

我正在寻找一个简单的解决方案来仅在单击a-tag调用PHP 函数

PHP:

function removeday() { ... }

HTML:

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

更新: html 和 PHP 代码在同一个 PHP 文件中

6个回答

首先,要了解您同时使用三种语言:

  • 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 函数的方式,即使它们在同一个文件中。这为您提供了一定程度的安全性,“我是否应该为此用户运行此脚本?”。

如果您不想刷新页面,可以通过称为异步 JavaScript 和 XML (AJAX) 的方法向 PHP 发出请求而无需刷新。

不过,您可以在 YouTube 上查找这些内容。只需搜索“jquery ajax”

我向任何新手推荐 Laravel:http ://laravel.com/

谢谢我正在寻找这个。我如何用 wordpress 实现这个
2021-03-20 03:33:50
伙计,非常感谢您,您的回答不仅帮助我解决了这个疑问,而且还让我更好地理解了 php!再次感谢你!
2021-03-23 03:33:50
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).好吧,他确实包含onclick在问题中,所以很明显,目标是在不刷新的情况下执行操作。~~~
2021-04-03 03:33:50
谢谢你,因为你的提及,我将开始专注于 Laravel。
2021-04-04 03:33:50
顺便提一下,我假设您对 PHP还很陌生我想推荐laravel.com作为框架。就我个人而言,我很想跳过整个“学习通用 php”,直接进入一个强大的框架。这也是我现在使用的一种。
2021-04-11 03:33:50

在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
}
Vanilla JavaScript 中也提供了相同的解决方案,可以更好地帮助初学者。我是作为一个更有经验的 JavaScript 用户这么说的,他曾经是一个完整的初学者,但精通 PHP。
2021-03-22 03:33:50
澄清一下:type应该在早于 1.9.0 的 jQuery 中使用,而 whilemethod是一个别名,应该在较新的版本上使用。
2021-04-04 03:33:50

您将必须通过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/

@JoeDoe 你不能,把函数放在一个外部文件中
2021-03-12 03:33:50
“url:”参数引用外部php文件,如何在同一个文件中引用php函数?
2021-03-15 03:33:50
由于@Barmar 的解释,它不能那样工作。您需要将 php 放在一个单独的文件中,然后在您的 AJAX 请求中引用该文件。
2021-04-07 03:33:50
为什么是 AJAX?这将是相同的 PHP 文件(我更新了我的问题)
2021-04-09 03:33:50

如果这是您的按钮,则可以使用相当简单的 php 完成

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

这是你的 php 代码

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

当提交 get 发布时调用代码 get,这在单击按钮时发生。

无需重新加载页面的解决方案

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