繁体   English   中英

Html 不引用脚本而是引用方法的操作

[英]Html action without referencing a script and referencing a method instead

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

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

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

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

action="foo.php?fromForm=yes"

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

if($_GET['fromForm'] == "yes") {
//put your function here, or call it here
}
else {
//rest of code goes here
}

想象你的表格看起来像:

<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(); 使用您要执行的 function 的名称。

这只是检查是否有任何表单数据发布到name="textfield"的页面。

不,您指定的不是script ,而是URL HTML/浏览器不知道服务器端的函数或方法,只知道 URL。

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

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

您还可以使用它来验证您的表单,然后再将其传递给如下脚本:

<form method="post" action="foo.php" onsubmit="canSubmit()"></form>

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

客户端不能随意调用服务器端的方法。 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

    }
?>

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

如果你的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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM