从Action Form调用PHP函数

时间:2012-05-21 16:42:41

标签: php forms function

我想将我的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 

}
?>

3 个答案:

答案 0 :(得分:2)

您无法直接调用PHP函数。但是,如果php文件的格式如何在这里显示只有两个函数,你可以将一个标志作为POST字段传递,并让逻辑块根据该标志确定哪个函数调用。它并不理想,但它可以用于您的目的。但是,这会强制页面刷新,并且您可能必须在函数返回后加载不同的页面,因此您可能希望简单地将其实现为ajax调用以避免页面刷新。

根据您的评论进行编辑(使用jQuery Ajax):

  

我正在使用.ajax()jQuery函数。我的意图是创建一个包含不同html表单的多个函数的php文件。 - tmhenson

在这种情况下,您可以让您的文件包含逻辑块,以将请求“路由”到正确的函数,最后返回结果。

我会尝试根据一些简单的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 
}
?>

答案 1 :(得分:0)

你不能。 PHP仅在服务器上运行。您可以使用javascript AJAX调用来调用服务器上的php脚本,或使用常规表单提交,但直接从客户端html调用特定的PHP函数?不可能。

答案 2 :(得分: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听起来不应该是一个类的方法。尝试仅使用与相关方法相关的类。要调用方法,可以将其定义为static,或者必须创建类的实例,然后调用方法。