【问题标题】:How to call a PHP function on the click of a button如何在单击按钮时调用 PHP 函数
【发布时间】:2014-01-11 08:44:46
【问题描述】:

我创建了一个名为 functioncalling.php 的页面,其中包含两个按钮,SubmitInsert

我想测试单击按钮时执行的功能。我希望输出出现在同一页面上。所以,我创建了两个函数,每个按钮一个。

<form action="functioncalling.php">
    <input type="text" name="txt" />
    <input type="submit" name="insert" value="insert" onclick="insert()" />
    <input type="submit" name="select" value="select" onclick="select()" />
</form>

<?php
    function select(){
        echo "The select function is called.";
    }
    function insert(){
        echo "The insert function is called.";
    }
?>

这里的问题是点击任何按钮后我都没有得到任何输出。

我到底哪里错了?

【问题讨论】:

  • PHP 在服务器上执行。您的点击处理程序在客户端上执行。您不能通过单击这样的按钮来运行 PHP 函数。但是,您可以使用 Javascript 来完成。
  • 感谢您的回复。你能告诉我如何从 JavaScript 调用这些 PHP 函数吗?
  • this answer

标签: php html htmlbutton


【解决方案1】:

是的,这里需要 Ajax。详情请参考以下代码。

 

像这样更改您的标记

<input type="submit" class="button" name="insert" value="insert" />
<input type="submit" class="button" name="select" value="select" />

 

jQuery:

$(document).ready(function(){
    $('.button').click(function(){
        var clickBtnValue = $(this).val();
        var ajaxurl = 'ajax.php',
        data =  {'action': clickBtnValue};
        $.post(ajaxurl, data, function (response) {
            // Response div goes here.
            alert("action performed successfully");
        });
    });
});

在 ajax.php 中

<?php
    if (isset($_POST['action'])) {
        switch ($_POST['action']) {
            case 'insert':
                insert();
                break;
            case 'select':
                select();
                break;
        }
    }

    function select() {
        echo "The select function is called.";
        exit;
    }

    function insert() {
        echo "The insert function is called.";
        exit;
    }
?>

【讨论】:

  • 这段代码对我不起作用:未捕获的 ReferenceError: $ is not defined
  • 在使用此代码之前是否包含了 JQuery 库。
  • 我做到了,但刚刚意识到 //code.jquery.com/...etc 不会在 localhost 上加载,https:// 会!代码工作正常对不起我的错误。
  • 漂亮!正是我想要的。
  • 喜欢按钮类处理程序。对适用于许多场景的通用代码表示敬意。
【解决方案2】:

按钮点击是客户端,而PHP是在服务器端执行的,但您可以使用Ajax

$('.button').click(function() {
  $.ajax({
    type: "POST",
    url: "some.php",
    data: { name: "John" }
  }).done(function( msg ) {
    alert( "Data Saved: " + msg );
  });
});

在您的 PHP 文件中:

<?php
    function abc($name){
        // Your code here
    }
?>

【讨论】:

  • 感谢您提供解决方案。在你提供给我的 AJAX 代码 sn-p 中,如何调用 .done 属性中的 PHP 函数?
  • 一旦使用ajax调用php文件,有什么方法可以调用具体的php函数吗?还是我必须将每个文件放在不同的文件中?
  • 还使用 JS preventdefault 来阻止表单提交,因此页面不会重新加载。 w3schools.com/jsref/…
  • 作为一个初学者,我想澄清我的疑问。是否应该阻止这些页面开发,其中 HTML 和 PHP 代码合并在一个页面中,其中 HTML 服务于客户端交互的目的,如表单,而 PHP 作为对此类 HTML 表单的回复,例如根据是否有按钮打印一些结果表单被点击了?
  • 这应该如何工作?我在 abc 函数体中放置了一个 echo 语句,并且在函数声明行和函数中的 echo 调用上都放置了断点。当我点击按钮时,第一个断点被命中(即函数被声明),但身体中的断点从未命中,我认为这意味着函数永远不会被调用。
【解决方案3】:

你应该让按钮调用同一个页面,并在 PHP 部分检查按钮是否被按下:

HTML:

<form action="theSamePage.php" method="post">
    <input type="submit" name="someAction" value="GO" />
</form>

PHP:

<?php
    if($_SERVER['REQUEST_METHOD'] == "POST" and isset($_POST['someAction']))
    {
        func();
    }
    function func()
    {
        // do stuff     
    }
?>

【讨论】:

  • 谢谢!该方法是一个简单的 HTML 基础方法,无需插入 AJAX 即可使用
【解决方案4】:

您不能调用 PHP 函数,例如单击 HTML 中的按钮。因为 HTML 在客户端,而 PHP 运行在服务器端。

你要么需要使用一些 Ajax,要么像下面的代码 sn-p 那样做。

<?php
    if ($_GET) {
        if (isset($_GET['insert'])) {
            insert();
        } elseif (isset($_GET['select'])) {
            select();
        }
    }

    function select()
    {
       echo "The select function is called.";
    }

    function insert()
    {
       echo "The insert function is called.";
    }
?>

您必须发布表单数据,然后检查是否有被点击的相应按钮。

【讨论】:

  • 如果我想给函数一个参数?
  • 您可以像 php 中的其他函数一样将参数传递给函数
【解决方案5】:

在您的输入中显示 $message:

<?php
    if(isset($_POST['insert'])){
        $message= "The insert function is called.";
    }
    if(isset($_POST['select'])){
        $message="The select function is called.";
    }
?>


<form  method="post">
    <input type="text" name="txt" value="<?php if(isset($message)){ echo $message;}?>" >
    <input type="submit" name="insert" value="insert">
    <input type="submit" name="select" value="select" >
</form>

要将 functioncalling.php 用作外部文件,您必须以某种方式将其包含在 HTML 文档中。

【讨论】:

    【解决方案6】:

    试试这个:

    if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
        select();
    }
    if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
        insert();
    }
    

    【讨论】:

    • 这是最好的答案,而不是使用愚蠢的框架
    【解决方案7】:

    你可以在 JavaScript 或 jQuery Ajax 中这样写并调用文件

    $('#btn').click(function(){
      $.ajax({
        url:'test.php?call=true',
        type:'GET',
        success:function(data){
        body.append(data);
        }
      });
    })
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.1/jquery.min.js"></script>
    <form  method='get' >
    
      <input type="button" id="btn" value="click">
    </form>
    
    <?php
        if(isset($_GET['call'])){
    
            function anyfunction(){
                echo "added";
    
                // Your funtion code
            }
        }
    ?>

    【讨论】:

      【解决方案8】:

      HTML 中的onclick 属性调用JavaScript 函数,而不是PHP 函数。

      【讨论】:

        【解决方案9】:

        我陷入了困境,我用隐藏字段解决了它:

        <form method="post" action="test.php">
            <input type="hidden" name="ID" value"">
        </form>
        

        value 中,您可以添加任何您想添加的内容。

        在test.php中你可以通过$_Post[ID]获取值。

        【讨论】:

        • 不应该在$_Post[ID] 中引用ID 吗? PHP 是否像 Perl 那样支持裸词?
        【解决方案10】:

        在表单操作调用自身的地方使用递归调用。然后以相同的形式添加 PHP 代码以捕获它。在foo.php 中,您的表单将在post 上调用foo.php

        <html>
            <body>
                <form action="foo.php" method="post">
        

        一旦提交表单,它会调用自己 (foo.php),您可以通过 PHP 预定义变量 $_SERVER 捕获它,如下面的代码所示

        <?php
            if ($_SERVER['REQUEST_METHOD'] == 'POST') {
                echo "caught post";
            }
        ?>
                </form>
            </body>
        </html>
        

        【讨论】:

          【解决方案11】:

          这是一个你可以使用的例子:

          <html>
              <body>
                  <form action="btnclick.php" method="get">
                      <input type="submit" name="on" value="on">
                      <input type="submit" name="off" value="off">
                  </form>
              </body>
          </html>
          <?php
              if(isset($_GET['on'])) {
                  onFunc();
              }
              if(isset($_GET['off'])) {
                  offFunc();
              }
          
              function onFunc(){
                  echo "Button on Clicked";
              }
              function offFunc(){
                  echo "Button off clicked";
              }
          ?>
          

          【讨论】:

            【解决方案12】:

            使用 HTML 按钮调用 PHP 函数:创建一个包含 HTML 按钮的 HTML 表单文档。单击按钮时,将调用 POST 方法。 POST 方法描述了如何向服务器发送数据。点击按钮后,array_key_exists()函数被调用。

            <?php
                if(array_key_exists('button1', $_POST)) { 
                    button1(); 
                } 
                else if(array_key_exists('button2', $_POST)) { 
                    button2(); 
                } 
                function button1() { 
                    echo "This is Button1 that is selected"; 
                } 
                function button2() { 
                    echo "This is Button2 that is selected"; 
                } 
            ?> 
            
            <form method="post"> 
                <input type="submit" name="button1" class="button" value="Button1" /> 
                <input type="submit" name="button2" class="button" value="Button2" /> 
            </form> 
            

            来源:geeksforgeeks.org

            【讨论】:

              【解决方案13】:

              您可以简单地执行此操作。在php中,您可以通过使用来确定按钮点击

              if(isset($_Post['button_tag_name']){
              echo "Button Clicked";
              }
              

              因此你应该修改你的代码如下:

              
              <?php
              
              if(isset($_Post['select']){
               echo "select button clicked and select method should be executed";
              }
              if(isset($_Post['insert']){
               echo "insert button clicked and insert method should be executed";
              }
                         
                      ?>
              
              <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
              <html>
                  <body>
                      <form action="functioncalling.php">
                          <input type="text" name="txt" />
                          <input type="submit" name="insert" value="insert" onclick="insert()" />
                          <input type="submit" name="select" value="select" onclick="select()" />
                      </form>
              
              <script>
              //This will be processed on the client side
              function insert(){
                window.alert("You click insert button");
              }
              
              function select(){
                window.alert("You click insert button");
              }
              </script>
              </body>
              </html>
              
              
                      
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2014-11-01
                • 2015-02-27
                • 2020-12-23
                • 1970-01-01
                • 2013-02-26
                • 1970-01-01
                • 2020-07-29
                相关资源
                最近更新 更多