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 文件的格式设置为您在此处仅使用两个函数显示的方式,则您可以将标志作为 POST 字段传入,并让逻辑块根据该标志确定哪个函数调用。这并不理想,但可以满足您的目的。但是,这将强制页面刷新,并且您可能必须在函数返回后加载不同的页面,因此您可能希望简单地将其实现为 ajax 调用以避免页面刷新。

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

我正在使用 .ajax() jQuery 函数。我的意图是创建一个 php 文件,其中包含用于不同 html 表单的多个函数。– 汤森森

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

我将尝试基于一些简单的 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 听起来它们不应该是一类的方法。尝试仅使用与方法女巫相关的类。要调用方法,您可以将其定义为静态,或者您必须创建类的实例,然后调用方法。

于 2012-05-21T16:56:01.363 回答