2012-06-27 54 views
0

我有一个关于jquery ajax()的问题。我创建了一个表格网格,并且需要使用Tab键在单元格之间跳过。网格被构造为需要两次调用Ajax(用于保存前一个单元格并在第二个单元格中显示输入)。 我的问题是,当有人使用标签编辑单元格时,有时响应非常慢。正常响应大约是40-70ms,然后在相同的情况下响应超过1秒。为什么这是?在我看来,服务器没有关注,因为当编辑当前单元时出现延迟时,这个问题会更频繁发生。长时间的响应不是由编辑的数据类型或类似的东西引起的。它看起来像它是完全随机的.. 我不想重拍网格,因为一切运作良好,除了这个问题... 谢谢!jquery ajax响应有时很慢

+0

你说“服务器没有注意力......”你有没有研究与服务器的交流,例如使用Firebug,Chrome的开发人员工具或Fiddle? – fvu

+0

是的,但我找不到原因..标题和交流数据在缓慢和快速的情况下是相同的。 – Michal

+0

和时间呢?服务器的响应时间是否有显着差异?如果是这样,你将不得不看服务器端。 – fvu

回答

1

我看到了两种可能的方法来解决这个问题。

  1. 模块性。如果可以的话,将网格隔离为沙箱原型,除了需要重现错误的地方外,没有其他任何东西被实现。如果你的代码是模块化的,这很容易,如果不是这样的话可能不可能。

    隔离行为的第二种方法是实际从服务器断开连接。这就是我的意思:可以修改你的ajax来简单地返回一个'模拟'对象。这样您就知道没有延迟或意外的数据类型。这个概念被称为“数据模拟”,与测试驱动开发设置类似。这将证明,如果您的请求响应回调中出现错误。但是,我不认为这是事实。

  2. 活动。出于某种原因,您的描述听起来可能与事件相关。如果有东西被破坏,将网格隔离为原型可能意外地解决了这个问题。所以这里是我在这种情况下的建议:

    A.测试跨浏览器的错误情况。事件在不同浏览器中的行为可能会有所不同。这可能会给你提示根本原因。

    B.步骤 - 调试你的代码。如果一系列事件正在产生,或者如果另一个处理程序正在进入,那么最好的办法就是在运行时捕捉它。 C. Chrome,右键单击,检查元素,脚本选项卡并设置断点是一个强大的工作流程,可帮助解决此问题。

    D.有一个自定义事件需要stopPropagation()或preventDefault(),它会将附加事件动作与DOM堆栈处理程序链接分开。这可能会也可能不是这样,因为我提到它的原因是 - 当我在过去遇到它时,它最初看起来是随机的并且难以再现。 Here is a link to this information on MDN

希望帮助! Nash