使用AJAX加载表单将在提交失败后松散表单和值

时间:2014-11-30 21:35:44

标签: php jquery css ajax

我有一个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) - “记住”在提交失败的情况下哪些部分应该可见(服务器端验证)某些会话变量保存信息( AJAX) - 然后,在提交(失败)之后使用jQuery恢复先前的表单结构(以这种方式用JS获取会话变量:var xpto = "<?php echo $_SESSION['prior_xpto']; ?>" ;

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

2 个答案:

答案 0 :(得分:1)

您有3个选项。

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

答案 1 :(得分:0)

请为您的问题提供一些代码,但我想您的问题是使用按钮发送结果&#34;提交&#34;输入!

如果你有这样的表格:

 <form>
 <inputs ...>  
 <input type="submit" value="Send data" onclick="SendDataUsingAjax()" >
 </form>
单击提交后

无论您的ajax函数在做什么,输入上的所有值都将重置。要解决这个问题你只需要改变type =&#34;提交&#34;输入=&#34;按钮&#34;。