3

我有一个 Web 应用程序,其中包含使用 Ajax 回调创建的项目表。表格顶部的一堆表单字段允许我根据各种条件过滤将在表格中显示的项目并显示它。

表格的某些部分有项目列表,旁边标有 [X],我可以通过单击这些项目来删除这些项目。

现在,如果我以非 ajax/javascript 方式执行此操作,页面将收到一堆 POSTed 数据字段,然后相应地呈现表格。我可以做到这一点,但我也想 Ajaxify 整个设置。我的问题是关于这个的。

  1. 我将如何创建 [X] 按钮。一个简单<a>的“工作”,但它是一个 GET 修改状态,所以我不想这样做。我现在这样做的方式是一个带有隐藏参数的小表单,而不是保存要删除的项目和一个样式化的提交按钮,即 [x]。如果我对此进行 ajaxify 处理,我可以获得响应并做必要的事情。

  2. 如何保持后端干燥?我不希望 Ajaxified 版本和常规版本有两个完全不同的代码。我现在正在做的是让非 ajax 版本提交到更改状态的 URL,然后再次重定向到主页(类似于 PRG 类型系统)。启用 Ajax 后,我只需调用 URL 并忽略重定向,而是使用返回的数据来调整表格。这是“正确的方法”吗?

  3. 关于如何保持我的后端干燥的优雅降级的任何其他建议?

4

1 回答 1

3

我会将每一行放入它自己的表单中(使用method='POST'),并包含一个隐藏字段来说明要删除的项目。[X] 将提交表单,并且在表单的提交事件中,如果不存在 XmlHttpRequest,只需将表单提交到服务器,服务器将删除该项目并再次重定向到同一页面(这是避免从重新提交删除 POST)。
如果存在 XmlHttpRequest,请将其设置为 POST,并使用要删除的事物的 id,如果请求成功,则删除该行。您可以在 AJAX 请求中设置一个标志,这样重定向就不会发生,只会成功(200 OK)。

于 2010-10-20T16:42:07.810 回答