gpt4 book ai didi

php - 使用 AJAX 加载表单将在提交失败后丢失表单和值

转载 作者:太空宇宙 更新时间:2023-11-04 12:36:48 25 4
gpt4 key购买 nike

我有一个 PHP 页面,它使用 AJAX 加载表单的多个部分。例如,首先检查用户是否已注册,如果已注册,脚本将加载(使用 AJAX)表单的其余部分。表单将不会使用 AJAX 提交,当用户提交表单(没有 AJAX)时可能会出现问题 - 想象有一些错误 - 表单将丢失所有值。我想知道如果CSS隐藏部分表单并在成功登录后使用JS显示表单的其余部分会更好。

这里是一些代码:

<form action="some_action.php">
Email: <input type="text" name="email" id="email"> <br />
Password: <input type="password" name="password" id="password"> <br />
<button id="vrf_login">Verificar</button>

<div id="rest_form">

</div>
</form>

Ajax :- 检查登录:如果电子邮件和密码匹配- 为 ID 为“rest_form”的 div 加载表单 (它在另一个文件中,例如:

<input type="text" name="place" id="place">
<input type="text" name="age" id="age">
<input type="submit" name="submit" value="submit">

)

问题是,如果我提交表单(没有 AJAX)并且出现错误,我将丢失使用 AJAX 加载的表单

编辑(再次)

感谢大家的建设性建议:我采用的解决方案接近于第一个Alkis的建议:

  • 几乎所有的表单都是隐藏的(CSS)

  • 经过一些逻辑选择后,(部分)表单变为可见(jQuery)-“记住”在提交失败(服务器端验证)的情况下哪些部分应该可见一些 session 变量保存信息( AJAX) - 然后,在提交(失败)后使用 jQuery 恢复之前的表单结构(通过 JS 获取 session 变量:var xpto = "<?php echo $_SESSION['prior_xpto']; ?>" ; )

  • 表单的字段将记住它们的值(使用 PHP)

最佳答案

您有 3 个选项。

  1. 停止通过 ajax 加载整个表单。使用 css 隐藏它并在满足条件时显示它。如果页面在一些验证错误后显示,就显示它(更改内联 css 或给它一个不同的类)
  2. 有一个条件,每次加载页面时检查它是否是第一次加载,或者页面是否在出现验证错误后显示。如果后者为真,则使用 ajax 再次加载表单。此条件可以是一个隐藏字段,它从服务器获取其值,并且您每次提供页面时都在客户端检查它。
  3. 第二个解决方案也可以在服务器上完成。在服务器上检查条件。如果它是第一次加载,那么不要填充表单并让它像现在一样从 ajax 填充。如果是在验证错误之后,则预填充表单。这只是一个 if/else 子句。

关于php - 使用 AJAX 加载表单将在提交失败后丢失表单和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com