我有一个关于 jquery ajax() 的问题。我创建了一个表格网格,并且需要使用 tab 键在单元格之间跳过。网格的构造使得需要调用 ajax 两次(用于保存前一个单元格并在第二个单元格中显示输入)。我的问题是,当有人使用选项卡编辑单元格时,有时响应很慢。正常响应时间约为 40-70 毫秒,然后在相同情况下响应时间超过 1 秒。这是为什么呢?在我看来,服务器没有注意,因为当编辑当前单元格有延迟时,这个问题更常见。长响应不是由编辑的数据类型或类似的东西引起的。看起来它完全是随机的..我不想重新制作网格,因为除了这个问题之外一切都很好......谢谢!
1 回答
我看到了两种可能的方法来解决这个问题。
模块化。如果可以的话,将网格隔离到一个沙盒原型中,除了重现错误所需的之外,没有其他任何实现。如果您的代码是模块化的,这很容易,如果不是,则可能是不可能的。
隔离行为的第二种方法是实际断开与服务器的连接。这就是我的意思:可以修改您的 ajax 以简单地返回一个“模拟”对象。这样您就知道没有延迟或意外的数据类型。这个概念被称为“数据模拟”,类似于测试驱动开发设置。这将为您证明请求响应回调中是否有问题。但是,我认为不是。
事件。出于某种原因,您的描述听起来可能与事件有关。如果某些东西被破坏了,将你的网格隔离成一个原型可能会意外地解决这个问题。所以这是我在这种情况下的建议:
A. 跨浏览器测试错误案例。事件在不同的浏览器中表现不同。这可能会给您提示根本原因。
B. 逐步调试您的代码。如果正在产生一系列事件,或者如果另一个处理程序在不应该介入的情况下介入 - 你最好的选择是在运行时捕获它。
C. Chrome、右键单击、检查元素、脚本选项卡和设置断点是帮助解决此问题的强大工作流程。
D. 自定义事件有一个常见的情况,需要 stopPropagation() 或 preventDefault() 将额外的事件操作与处理程序的 DOM 堆栈链接分开。这对你来说可能是也可能不是,我提到它的原因是 - 当我过去遇到它时,它最初看起来是随机的并且难以重现。这是 MDN 上此信息的链接。
希望有帮助!纳什