Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 避免向页面提交过多内容_Javascript_Html - Fatal编程技术网

Javascript 避免向页面提交过多内容

Javascript 避免向页面提交过多内容,javascript,html,Javascript,Html,我有一个HTML页面,其中一个包含无数个单元格的表被放在整个页面上。具体而言,员工24小时工作制分为30分钟单元,即平均100名员工一行48个单元。单击每个单元格都会打开一个弹出窗口,在提交时再次提交整个页面。这一功能自很久以来一直在使用,但新客户端希望在所有随机弹出窗口修改完成后执行(意味着所有更改只应执行一次)。这主要是用java、javascript和自定义框架编写的。我的问题是这种情况下的双重方法是什么。我研究过的大多数通用答案都是AJAX实现,但我觉得javascript内部的一些调整

我有一个HTML页面,其中一个包含无数个单元格的表被放在整个页面上。具体而言,员工24小时工作制分为30分钟单元,即平均100名员工一行48个单元。单击每个单元格都会打开一个弹出窗口,在提交时再次提交整个页面。这一功能自很久以来一直在使用,但新客户端希望在所有随机弹出窗口修改完成后执行(意味着所有更改只应执行一次)。这主要是用java、javascript和自定义框架编写的。我的问题是这种情况下的双重方法是什么。我研究过的大多数通用答案都是AJAX实现,但我觉得javascript内部的一些调整可能会满足要求。

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

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


如果您使用的是纯Javascript,那么这可能是最好的。像jQuery这样的各种框架都有非常简单的内置函数。

AJAX肯定是最好的解决方案。但是,鉴于您对重写犹豫不决,我想到了两种改进方法:

  • 更改表的体系结构,以便不是每次更改都需要提交—应该可以根据需要更改尽可能多的字段,然后使用一个提交操作保存所有字段。不过,这取决于表的结构,以及保存脚本的工作方式——可能需要返工,如果不知道更多信息,很难说出来

  • 创建一个不可见的IFRAME,给它一个名称,并将所有
    元素的
    目标属性设置为该IFRAME。每个弹出窗口仍然会有一个提交操作,但它会提交到不可见的Iframe中,而页面不必重新加载,用户可以继续工作。这并不是一个很好的解决方案,但至少在不涉及文件上传的情况下,它可以完成这项工作


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


      这可能非常快。在我开发的一个应用程序中,每次刷新的HTML值为100k,而只有数据更新时,HTML值下降到5k或更少。

      如果不使用AJAX,您必须在保存时提交所有100*48的值,服务器必须计算出哪些值已更改,您不想这样做。