我想将我的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
}
?>
答案 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,或者必须创建类的实例,然后调用方法。