1

PHP ファイルを共通のクラス ファイルに統合したいのですが、.php ページの代わりに関数を呼び出す方法がわかりません。HTML ページのフォーム セクションで sendEmail() を呼び出すにはどうすればよいですか?


HMTL
<form action="form_class.php" id="frmAirport" method="post">
Full Name: <span style="white-space: pre;"> 
</span><input name="name" type="text" /><br /><br />
Email Address: <input name="email" type="text" /><br /><br />
Subject: <span style="white-space: pre;">       
</span><input name="subject" type="text" /><br /><br />
<textarea id="txtComments" cols="30" rows="10">Comments</textarea><br />
<input type="submit" value="Send" />
</form>

<?php
function addPerson() {
//do stuff here 
}

function sendEmail() {
//do some stuff here 

}
?>
4

3 に答える 3

2

PHP 関数を直接呼び出すことはできません。ただし、php ファイルがここに表示されているように 2 つの関数のみでフォーマットされている場合は、POST フィールドとしてフラグを渡し、そのフラグに基づいてどの関数呼び出しをロジック ブロックで決定することができます。理想的ではありませんが、目的には適しています。ただし、これによりページが強制的に更新され、おそらく関数が戻った後に別のページをロードする必要があるため、ページの更新を避けるために ajax 呼び出しとしてこれを実装することをお勧めします。

コメントに基づいて編集します (jQuery Ajax を使用):

.ajax() jQuery 関数を使用しています。私の意図は、さまざまな html フォーム用の複数の関数を含む 1 つの php ファイルを作成することです。– トムヘンソン

この場合、ファイルに論理ブロックを含めて、要求を正しい関数に「ルーティング」し、最終的に結果を返すことができます。

簡単なjQueryに基づいて、あなたがやりたいことのオプションを提供しようとします。次のようなものがあるとします。

Java スクリプト:

$("#button1").click(function(e){ 
    e.preventDefault(); // prevents submit event if button is a submit
    ajax_route('ap'); 
}); 
$("#button2").click(function(e){ 
    e.preventDefault(); // prevents submit event if button is a submit
    ajax_route('se'); 
});

function ajax_route(action_requested){ 
    $.post("ajax_handler.php", {action : action_requested}, function(data){
        if (data.length>0){ 
            alert("Hoorah! Completed the action requested: "+action_requested); 
        } 
    })
}

PHP (ajax_handler.php 内)

<?php
// make sure u have an action to take
if(isset($_POST['action']) 
    switch($_POST['action']){
        case 'ap': addPerson(); break;
        case 'se': sendEmail(); break;
        default: break;
    }
}

function addPerson() {
    //do stuff here 
}

function sendEmail() {
    //do some stuff here 
}
?>
于 2012-05-21T16:48:45.097 に答える
0

できません。PHP はサーバー上でのみ実行されます。javascript AJAX 呼び出しを使用して、サーバー上で php スクリプトを呼び出すか、通常のフォーム送信を使用して、クライアント側の html から特定の PHP 関数を直接呼び出すことができますか? ありえない。

于 2012-05-21T16:44:57.580 に答える
0

私が正しく理解しているかどうかはわかりませんが、関数/メソッドを呼び出すには、非表示の入力を使用できます。

<!-- form -->
<input type="hidden" name="action" value="sendEmail" />

// handle file
<?php
$actionObject = new Actions();
if (method_exists($actionObject, $_POST['action'])) {
    $actionObject->{$_POST['action']};
}
?>

AddPerson と sendEmail は、1 つのクラスのメソッドである必要があるとは思えません。メソッド witch are related でのみクラスを使用するようにしてください。メソッドを呼び出すには、静的として定義するか、クラスのインスタンスを作成してからメソッドを呼び出す必要があります。

于 2012-05-21T16:56:01.363 に答える