为什么原型的Ajax请求需要很长时间才能处理?

时间:2009-10-21 23:26:54

标签: javascript ajax prototypejs

我正在使用prototype.js及其Ajax对象来实现interactionve图形小部件。我为用户想要的数据生成XML查询,使用Ajax.request将其发送到服务器,并且似乎永远需要Firefox。 Firebug控制台似乎在大约700毫秒内显示POST完成200 OK,但我安装的onInteractive()处理程序(当readyState == 3时触发的原型)在下一个TWELVE SECONDS上多次触发,然后我的onSuccess处理程序进程数据。

在深入研究代码之前,有人知道这里发生了什么吗?

2 个答案:

答案 0 :(得分:1)

对于readyState 3,XHR请求仍在进行中,因此可能会多次触发onInteractive处理程序。它有什么作用?为什么你不能使用一个回调并在readyState === 4上触发它?此外,您可以尝试使用Firebug的网络面板(顶部的“网络”标签)来查看所需的所有时间。

答案 1 :(得分:0)

事实证明,当readystate为4时,Firebug正在显示POST结束,但直到我的onSuccess处理程序完成后才报告整个事务已完成,而且需要花费相当长的时间才能使用兆字节的XML 。切换到更紧凑的JSON表示而不是XML,将繁琐的XML解析减少到或多或少:

eval(responseText); doGraph();

感谢评论,伙计们,他们并不是我所需要的,但他们指出了我正确的方向,而且这个功能现在非常流畅。