181

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

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

<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.";
    }
?>

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

我到底哪里错了?

4

13 回答 13

104

是的,这里需要 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;
    }
?>
于 2013-12-23T07:10:40.977 回答
77

按钮点击是客户端,而 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
    }
?>
于 2013-12-23T06:54:21.130 回答
55

您应该使按钮调用同一页面,并在 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     
    }
?>
于 2016-12-04T12:47:31.393 回答
19

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

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

<?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.";
    }
?>

您必须发布表单数据,然后检查是否单击了适当的按钮。

于 2013-12-23T06:55:22.613 回答
14

要在您的输入中显示 $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 文档中。

于 2015-08-21T17:52:19.407 回答
10

尝试这个:

if($_POST['select'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    select();
}
if($_POST['insert'] and $_SERVER['REQUEST_METHOD'] == "POST"){
    insert();
}
于 2014-03-29T20:28:59.987 回答
8

您可以在 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
        }
    }
?>

于 2015-12-30T07:39:59.990 回答
7

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

于 2013-12-23T06:56:33.713 回答
5

我被困在这个问题上,我用一个隐藏的字段解决了它:

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

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

在 test.php 中,您可以通过$_Post[ID].

于 2016-03-18T12:21:40.157 回答
4

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

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

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

<?php
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        echo "caught post";
    }
?>
        </form>
    </body>
</html>
于 2015-07-21T20:56:25.163 回答
3

这是您可以使用的示例:

<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";
    }
?>
于 2015-07-17T06:58:53.177 回答
2

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

于 2020-11-24T17:02:24.297 回答
1

你可以简单地做到这一点。在 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>


        
于 2020-01-20T11:57:27.630 回答