【问题标题】:How to Re-Populate dynamic fields?如何重新填充动态字段?
【发布时间】:2012-10-02 20:17:03
【问题描述】:

见下图,我可以根据需要添加许多产品。首先,我从下拉列表中选择一个类别,然后通过 Ajax 在 Items 下拉列表中生成相关条目。通过点击“添加另一个产品”,我可以根据需要添加许多产品。

如果我完成了产品的选择,我将需要单击提交/订购按钮,然后通过 PHP(无 Ajax)验证字段,然后再添加到销售中。如果验证未通过 - 我需要重新填充所有选定的类别和条目(换句话说,再次创建产品字段) - 如何做到这一点?

注意:所有数据将存储在$_POST

【问题讨论】:

  • 我认为如果您的 JS 代码完全结构化,您将重用您在编辑时执行的相同方法,只有这些函数使用的值将来自持久的服务器端数据而不是用户交互。也许不是答案,但希望你最终会在哪里。与 CRUD 一样,您是编写两组代码来创建和编辑场景,还是在不同的上下文中使用单一基础。

标签: php ajax jquery field


【解决方案1】:

您的选择:

  • 使用 $_POST 数据生成包含用户创建的字段的 html
  • 存储 $_POST 数据(例如在会话中)并将用户重定向回原始表单,如果找到保存的数据,该表单必须包含代码以生成用户创建的字段。

首选第二个选项。

编辑:关于选项二的额外信息。

当验证失败时,在会话中保存 $_POST 数据:$_SESSION['stored post'] = $_POST; 并重定向到原始表单(发起 POST 的表单):header('Location: /url/of/the/original-form.html);

在生成订单的代码中添加以下内容:

if ( isset($_SESSION['stored post']) 
     && is_array($_SESSION['stored post']) 
     && count($_SESSION['stored post']) > 0 ) //check if there is POST stored
{
    //generate fields from data stored in $_SESSION['stored post'] here

    unset($_SESSION['stored post'];  //remove the stored data
}

【讨论】:

  • 请清楚第二个选项,也许还有例子。
【解决方案2】:

对于输入框,就这么简单

<input name="fname" value="<?php if(isset($_POST['fname'])) echo $_POST['fname']' ?>">

对于选择框,您必须遍历选项以找出应该选择哪个对象。

【讨论】:

  • -1。是的,我知道,但这不是我的问题。就像我说的那样,字段是通过 jQuery 创建的,相关条目是通过 Ajax 创建的。
  • 啊。嗯,对不起。我熟悉使用 PHP 来回传递表单,但在 jQuery 和 Ajax 上却很不稳定。对此感到抱歉。
  • +1。如果数据在$_POST 中,为什么不使用 PHP 向客户端发送预填充的表单?您只需要在客户端添加一个“删除产品”按钮即可。
  • @deizel 当字段是通过 jQuery 和 Ajax 创建的。然后点击提交按钮提交订单。如果验证失败,它将在同一页面上但刷新...所有动态字段都将消失。
  • 嗯,它们并没有消失,它们在 $_POST 中。您可以使用 PHP 将 $_POST 输出为 HTML 表单字段,也可以使用 PHP 将 $_POST 输出为 Javascript 数组。您的选择。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2016-02-19
  • 1970-01-01
相关资源
最近更新 更多