【问题标题】:Change to different form on drop down menu selection在下拉菜单选择中更改为不同的形式
【发布时间】:2016-11-09 10:17:39
【问题描述】:

我有一个页面上的服装订购表。当我从下拉列表/菜单中选择一个选项时,我想用另一个表单“交换”该表单。也许是阿贾克斯? PHP包含()?下拉菜单中的选项将选择已在另一个目录中作为模板创建的不同表单,并将其呈现在另一个表单的位置。

我只想一次显示一个表单。谢谢! :)

【问题讨论】:

  • @AshkayP 谢谢,我看到了那个并且正在测试它,但是这种方式适用于 20 个表单吗? 50张表格?我们有很多款式。在一页上隐藏这么多表单有什么问题吗?

标签: php forms


【解决方案1】:

如果可以的话,不要放置太多隐藏的表格。这只是糟糕的设计,尤其是在性能方面。您最好的选择是:

  • 创建一些 PHP 文件,每个文件都包含一个表单
  • 如果满足条件,则使用 AJAX 请求进行通信

如果您喜欢在一个文件中填充内容,请尝试使用 AJAX 向 PHP 文件传递​​唯一参数检查其值以决定加载哪个表单。。 p>

示例

var xhr = new XMLhttpRequest();
    formID = (condition) ? 1 : 2; // etc

    //^^ This one line above means:
    if (condition) {
        formID = 1;
    }
    else {
        formID = 2;
    }

...

// GET request
xhr.open("GET", "forms.php?formID=" + formID);

// POST request
xhr.send("formID=" + formID);

在 PHP 中

<?php
    if (isset($_POST["formID"]) && $_POST["formID"] === 1):
?>
        <form id = "1"></form>
<?php
    else:
?>
        <form id = "2"></form>
<?php
    endif;
?>

[编辑]

如果您想将每个表单放在不同的文件中,那么上面的代码将是:

<form>...</form> // No PHP necessary

在 JavaScript 中使用 xhttp.send("") 而不输入任何值(仅当表单位于不同的文件中时)。

【讨论】:

  • 我有点初学者,所以你的代码对我来说有点模糊。你是说我可以为每个表单创建一个模板并使用 AJAX 将任何选择的表单呈现到页面上?
  • 没错。创建您的两个表单并将它们放在if statement 中,就像我所做的那样,以便 PHP 决定要呈现哪一个。 PHP 将根据您通过 AJAX 请求发送给它的数据来决定渲染哪一个。它可以是任何东西,但为了简单起见,我使用了数字 12
  • 另外,如果你还不知道,isset() 检查是否存在某些东西。所以if isset($_POST["formID"]) 检查 PHP 是否从 AJAX 接收到数据。然后我们检查它的值,从而决定显示哪种形式。
  • 我需要在里面有“ && $_POST["formID"] ”吗?
  • (如果所有表格都在同一个文件中,否则,。您需要它来查看您使用 AJAX 发送的值是否与您要显示的表单相对应。我还更正了我的编辑,因为不清楚。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-28
  • 1970-01-01
  • 1970-01-01
  • 2018-09-16
  • 1970-01-01
  • 1970-01-01
  • 2013-08-22
相关资源
最近更新 更多