Javascript 为什么原型';s的Ajax请求需要这么长时间才能处理?
我正在使用prototype.js及其Ajax对象实现一个交互式图形小部件。我为用户想要的数据生成了一个XML查询,并使用Ajax.request将其发布到服务器上,而Firefox似乎需要花费很长时间。Firebug控制台似乎显示POST在大约700毫秒内以200 OK结束,但我安装的onInteractive()处理程序(原型在readyState==3时触发)在接下来的12秒内多次触发,然后我的onSuccess处理程序处理数据Javascript 为什么原型';s的Ajax请求需要这么长时间才能处理?,javascript,ajax,prototypejs,Javascript,Ajax,Prototypejs,我正在使用prototype.js及其Ajax对象实现一个交互式图形小部件。我为用户想要的数据生成了一个XML查询,并使用Ajax.request将其发布到服务器上,而Firefox似乎需要花费很长时间。Firebug控制台似乎显示POST在大约700毫秒内以200 OK结束,但我安装的onInteractive()处理程序(原型在readyState==3时触发)在接下来的12秒内多次触发,然后我的onSuccess处理程序处理数据 在我深入研究代码之前,有人知道这里发生了什么吗?对于read
在我深入研究代码之前,有人知道这里发生了什么吗?对于readyState 3,XHR请求仍在处理中,因此可能会多次触发您的
onInteractive
处理程序。它有什么作用?为什么不能使用一个回调并在readyState===4
上启动它?此外,您还可以尝试使用Firebug的net面板(“顶部的net”选项卡)查看花费了多少时间。事实证明,Firebug在readystate为4时显示POST finishing,但在onSuccess处理程序完成之前,不会报告整个事务的完成,而这一过程需要花费相当长的时间来处理兆字节的XML。切换到更紧凑的JSON表示而不是XML,将繁琐的XML解析或多或少地减少到:
eval(responseText); doGraph();
谢谢大家的评论,伙计们,它们并不是我所需要的,但它们为我指明了正确的方向,而且该功能现在运行得非常顺利。您在回复中返回了多少?大约1兆字节的XML文本,根据查询范围的不同,稍后一个快速的awk脚本显示,一个或多或少紧凑的JSON表示大约要小20倍,所以我来看看服务器端脚本。我本希望避免它——最好有一件东西要维护,而不是两件东西——但是性能的提升是值得的;这完全是为了调试。我试图弄明白为什么Firebug声称XHR已经完成了这么久。网络标签是个好主意,谢谢。