3

我有一个困境,我真的可以使用一些建议。我正在使用 PHP/Smarty/HTML/jQuery 构建一个订购系统。目前在卖家确认订单的网站上工作。

我需要有 3 个 div。

  1. 等待订单 div - 包含未处理订单的表格
  2. 最后订单 div - 包含一个包含最后处理订单的表格(10-20 行)
  3. 详细信息 div - 包含有关订单的信息,以及确认/拒绝按钮

这是一个典型的 master-detail 情况,只有 master 被分成 2 个部分(1,2),而 details 在 div 3 中。自然一切都与 javascript/Ajax 连接,因此用户可以获得“实时”的感觉。等待订单 div 是通过彗星(长轮询)技术填充的。

我的困境是如何将 div 与 javascript/ajax 连接起来。我是否应该制作与数据库状态相对应的回显页面并将其完全加载到 div 中。或者我应该只操作表行并仅将 ajax 用于后台数据库调用?

为了让自己更清楚:

选项 1(Ajax 完整页面):

  • 当用户选择等待订单时,使用 ajax 获取新页面(回显表)并加载到详细信息 div
  • 当用户确认/拒绝 div 3 中的订单时,div 1 和 2 使用 ajax 刷新(带有对应于 db 中状态的表的回显页面)

选项 2(html 操作/背景 Ajax):

  • 当用户选择等待订单时,div 3 的元素将填充新值。
  • 当用户在 div3 中按顺序确认/拒绝时,从 div 1 中的表中删除 tr(从 db 到 del 的背景 ajax)并在 div 2 中添加相同的 tr(要插入到 db 的背景 ajax)

那么该走哪条路呢?

4

1 回答 1

1

两种方式都可以接受,但 nr 1 对用户不太友好,因为重新加载 div 1&2。当您将某些内容加载到 div 3 中时,您有它的 id,因此复制/附加 tr (并添加颜色,以便用户知道发生了什么)应该是一个问题。

如果您选择 2,请记住将新操作取消绑定/绑定到您的 tr 元素,因为当您将 tr 移动到另一个地方时,它不会触发您之前绑定的操作。

我可能会自己去 2 ;)

PS。使用 ajax 加载程序 ( http://ajaxload.info/ )添加覆盖,以便在将数据加载到 div 3 时避免用户中断。用户也会更快乐,因为他会知道事情正在发生上 ;)

于 2011-01-31T17:37:03.670 回答