通常,当我处理表单时,在“action”参数中,我通常必须引用一个完整的PHP脚本,如下所示:
<form method="post" action="foo.php"></form>
有没有办法告诉表单使用函数或方法而不必提及整个脚本?
答案 0 :(得分: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
}
答案 1 :(得分: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"
的页面。
答案 2 :(得分:0)
没有。您指定的内容不是脚本,而是网址。 HTML /浏览器不了解服务器端功能或方法,仅了解URL。
答案 3 :(得分:0)
您可以使用onsubmit
属性来调用javascript方法:
<form method="post" onsubmit="doSomething()"></form>
您还可以在将表单传递给脚本之前使用它来验证表单,如下所示:
<form method="post" action="foo.php" onsubmit="canSubmit()"></form>
答案 4 :(得分:0)
注意:我假设您在询问是否可以在服务器端访问PHP代码中的方法或函数,而不是在客户端调用JavaScript函数! < / p>
客户端不能随意调用服务器端的方法。资源的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
}
?>
这是一个非常基本的例子。对于更复杂的需求,许多框架可以开箱即用地执行这种级别的分支,并且具有更高的复杂性。
答案 5 :(得分: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>