1

通常,当我处理表单时,在“action”参数中,我通常必须引用完整的 PHP 脚本,如下所示:

<form method="post" action="foo.php"></form>

有没有办法告诉表单使用函数或方法而不必提及整个脚本?

4

6 回答 6

2

不是我知道的,但我很确定你可以做这样的事情......

action="foo.php?fromForm=yes"

然后在你的php代码中,你可以有这个......

if($_GET['fromForm'] == "yes") {
//put your function here, or call it here
}
else {
//rest of code goes here
}
于 2012-04-09T00:15:01.427 回答
2

想象你的表格看起来像:

<form name="form1" method="post" action="">
    <p>
        <label></label>
        <input type="text" name="textfield" id="textfield" />
    </p>
    <p>
        <label></label>
        <input type="submit" name="button" id="button" value="Submit" />
    </p>
</form>

那么你可以把它放在 php 的顶部:

if (isset($_POST['textfield'])) {
    foo();
}

替换foo();为您要执行的函数的名称。

这只是检查是否有任何表单数据发布到带有name="textfield".

于 2012-04-09T00:22:50.220 回答
0

不,您指定的不是脚本,而是URL。HTML/浏览器不知道服务器端的功能或方法,只知道 URL。

于 2012-04-09T00:12:38.010 回答
0

您可以使用该onsubmit属性来调用 javascript 方法:

<form method="post" onsubmit="doSomething()"></form>

您还可以在将表单传递给脚本之前使用它来验证表单,例如:

<form method="post" action="foo.php" onsubmit="canSubmit()"></form>
于 2012-04-09T00:13:37.713 回答
0

注意:我假设您询问是否可以在服务器端访问 PHP 代码中的方法或函数,而不是在客户端调用 JavaScript 函数!

客户端不能随意调用服务端的方法。资源的 URL 或路径用于标识服务器上的资源。

如果您想在同一个脚本中执行不同的功能,您可以使用 if/else 阻止并使用查询参数来区分您的 URL。

HTML:

 <form method="post" action="foo.php?method=saveData"></form>

PHP:

<? /* foo.php */
    if($_REQUEST['method'] == "saveData") {

        // do stuff

    } else if($_REQUEST['method'] == "doSomethingElse") {
        // do other stuff

    }
?>

这是一个非常基本的例子。对于更复杂的需求,许多框架可以执行这种级别的分支,开箱即用,并且更加复杂。

于 2012-04-09T00:15:18.573 回答
0

如果你的 PHP 脚本是这样写的:

<?php
switch ($_GET ['f']) { 
  case 'do_one':
    // do something
    break;
  case 'do_two':
    // or use a callback
    do_two_callback ();
    break;
  default:
    // ...
}
?>

...你总是可以做到这一点

<form method="post" action="foo.php?f=do_one"></form>
于 2012-04-09T00:15:23.180 回答