使用HTML5数据属性自动执行ajax请求

时间:2012-02-25 11:52:19

标签: php ajax forms jquery

假设我有一个表格:

<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工作,我必须在模板中进行一些处理,我不喜欢这样做的想法

1 个答案:

答案 0 :(得分:1)

您只需添加抽象级别即可解决此问题。我们的想法是,无论何时将信息发送到服务器,JS代码都不会被硬编码为任何特定形式。它将遍历所有表单字段并将其值发送到服务器。在服务器端,您可以处理请求并找出错误(如果有)。然后,您可以通过将错误绑定到特定字段来返回它们:

{
  ...,
  errors: {
     "field-1": "error message",
     "field-2": "error message",
     ...
  }
}

然后你可以循环遍历错误,并且errors中的每个键找到DOM中的相应字段并在其附近添加错误消息。

其他想法

在网站表单上设置验证码通常是个好主意,以避免垃圾邮件提交。所以我强烈建议除了自动处理表单外,还要自动化验证码验证。添加csrf验证也不会有什么坏处。您可以在here了解更多相关信息。