我有一个Web应用程序,其中包含使用AJAX回调创建的项目表。表格顶部的一堆表单字段使我可以根据各种标准过滤表中显示的项目并显示。

该表的某些部分包含在它们旁边标记的项目列表,我可以通过单击这些项目来删除,这些项目可以删除。

现在,如果我以非AJAX/JavaScript方式进行此操作,则该页面将收到一堆已发布的数据字段,然后将相应地渲染表。我可以做到这一点,但我也想掩盖整个设置。我的问题是关于这个的。

  1. 我将如何创建[x]按钮。一个简单的 <a> 会“工作”,但这是一个修改状态,所以我不想这样做。我现在这样做的方式是一种带有隐藏参数的微小表单,而不是持有要删除的项目和[x]的样式提交按钮。如果我解决这个问题,我可以得到答复并做需要的事情。

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

  3. 关于如何使我的后端保持干燥的优雅退化的其他建议?

有帮助吗?

解决方案

我会把每行都放在自己的形式中( method='POST'),并包括一个隐藏的字段,说要删除哪个项目。 [x]将提交表单,在表格的提交事件中,如果没有XMLHTTPREQUEST,则只需将表单提交给服务器,该表格将删除项目并将其重定向到同一页面(这是避免从中重新加载的好习惯重新提交删除帖子)。
如果存在XMLHTTPREQUEST,请将其设置为具有事物ID的发布以删除,然后在请求成功时删除行。您可以在Ajax请求中设置标志,以免重定向,只是成功(200个)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top