避免向页面提交太多提交

时间:2010-02-23 12:48:03

标签: javascript html

我有一个HTML页面,其中包含无数个单元格的表格遍布整个页面。详细说明,员工24小时工作时间表分为30分钟单元表示平均每100名员工排48个单元。点击时每个单元格打开一个弹出窗口,在提交时再次提交整个页面。这已经使用了很久但新客户希望这应该在所有随机弹出窗口修改完成后发生(意味着所有更改应该只发生一次)。这主要用java,javascript和自定义框架编写。我的问题是这种情况的双重方法是什么。我研究过的大多数通用答案都是AJAX实现,但我觉得javascript中的一些调整可能会满足要求。

3 个答案:

答案 0 :(得分:1)

如果没有AJAX,我能想到的唯一解决方案就是每次更改一个值时都不提交表单,而是使用“保存”按钮一次性保存它们。

然而,AJAX将是最佳解决方案。您所做的就是向服务器提交大量数据,并在用户停留在当前页面时处理。

如果您使用普通的Javascript,

Mozilla's tutorial可能是最好的。像jQuery这样的各种框架都有非常简单的内置函数。

答案 1 :(得分:1)

使用XML并非绝对必要。对于您知道格式且非常相似的数据的快速而脏的方法是使用XMLHTTPRequest对象来回传递数据。您可以使用Javascript和事件检测单个单元格的更改,以存储已修改的单元格及其新内容。创建函数以将数据传递回更新数据库的服务器页面。

这可能非常快。在我工作的一个应用程序中,每次刷新的HTML为100k,当仅更新数据时,HTML降至5k或更低。

答案 2 :(得分:0)

AJAX肯定是最好的解决方案。但是看到你对改写犹豫不决,我想到了两种改进方式:

  • 更改表的体系结构,以便不是每个更改都需要提交 - 应该可以根据需要更改任意数量的字段,然后使用一个提交操作保存所有字段。这取决于表格的结构,以及保存脚本的工作方式 - 可能需要返工,很难在不知情的情况下判断。

  • 创建一个不可见的IFRAME,为其命名,并将所有<form>元素'target属性设置为该IFRAME。每个弹出窗口仍然会有一个提交操作,但是它会被提交到不可见的Iframe中,而页面不需要重新加载,用户可以继续工作。这不是一个非常漂亮的解决方案,但可以完成这项工作,至少只要没有涉及文件上传。