181

SubmitInsertfunctioncalling.phpの 2 つのボタンを含むというページを作成しました。

ボタンがクリックされたときに実行される関数をテストしたい。出力を同じページに表示したい。そこで、ボタンごとに 1 つずつ、2 つの関数を作成しました。

<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 に答える
19

HTML からボタンをクリックするような PHP 関数を呼び出すことはできません。PHPがサーバー側で実行されている間、HTMLはクライアント側にあるためです。

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 に答える
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 に答える
7

HTMLのonclick属性は、PHP 関数ではなく、JavaScript 関数を呼び出します。

于 2013-12-23T06:56:33.713 に答える
4

フォーム アクションがそれ自体を呼び出す再帰呼び出しを使用します。次に、同じフォームに PHP コードを追加してキャッチします。foo.phpあなたのフォームで呼び出されfoo.phpますpost

<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 に答える