假设我有一个表格:
<form>
...
<input type="submit" />
</form>
我希望它能正常提交,但如果用户启用了javascript,则应使用javascript($ .ajax)提交表单。
因为我有很多像这样的表单,我以为我可以使用jquery自动化处理ajax请求的过程。
所以我将data-ajax-event="login"
添加到表单中。
然后我在具有该属性的所有元素上调用$ .ajax事件,使用“ajax-event”参数和所有表单字段向site.com/ajax/
发送请求。
到目前为止这是可以的,但是当我必须得到响应并决定我应该显示什么消息以及在哪里(从$ .ajax完成函数对DOM进行更改)时会出现问题。
例如,登录响应会在存在登录错误时发送包含错误的json对象,或者在成功时重定向的URL。其他表单可能会发送HTML或其他任何形式。
你知道我怎么能自动化这个过程?我不是要求任何具体的解决方案。关于如何处理这个问题的想法。或者也许正在做这样的事情的框架的例子......
现在我已将所有内容拆分,所有输出都是从模板完成的,以及PHP内部的所有处理。为了使ajax工作,我必须在模板中进行一些处理,我不喜欢这样做的想法
答案 0 :(得分:1)
您只需添加抽象级别即可解决此问题。我们的想法是,无论何时将信息发送到服务器,JS代码都不会被硬编码为任何特定形式。它将遍历所有表单字段并将其值发送到服务器。在服务器端,您可以处理请求并找出错误(如果有)。然后,您可以通过将错误绑定到特定字段来返回它们:
{
...,
errors: {
"field-1": "error message",
"field-2": "error message",
...
}
}
然后你可以循环遍历错误,并且errors
中的每个键找到DOM中的相应字段并在其附近添加错误消息。
其他想法
在网站表单上设置验证码通常是个好主意,以避免垃圾邮件提交。所以我强烈建议除了自动处理表单外,还要自动化验证码验证。添加csrf验证也不会有什么坏处。您可以在here了解更多相关信息。