从来电形式的行动PHP函数(Call PHP Function from Action Form)

2019-10-16 18:14发布

我想我的合并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 

}
?>

Answer 1:

你不能直接调用PHP函数。 但是,如果你的PHP文件的格式如何与只有两个功能显示在这里,你可以作为一个POST场传递一个标志,有一个逻辑块确定基于该标志,该标志函数调用。 这是不理想,但它会工作为您的目的。 然而,这将迫使页面刷新,你可能会需要加载不同的页面的函数返回,所以你可能想简单地实现这个作为Ajax调用,避免页面刷新后。

根据您的评论(使用jQuery阿贾克斯)编辑:

我现在用的是阿贾克斯()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 
}
?>


Answer 2:

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



Answer 3:

我不知道如果我uderstand权利,但调用函数/方法,你可以使用隐藏的输入:

<!-- 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不听他们应该是一个类的方法。 尝试使用类只用方法女巫有关。 要调用方法,你可以把它定义为静态的,或者你必须让类的实例,然后调用方法。



文章来源: Call PHP Function from Action Form