【发布时间】:2012-12-26 07:45:31
【问题描述】:
在我的应用程序中,我在 $(document).ready() 函数中进行了多次 ajax 调用。问题是浏览器一直处于“loading”状态,直到 ajax 调用返回。而且由于这些 ajax 调用大约需要 15-20 秒才能完成,这让我的页面加载时间长得令人作呕。
我的期望是,由于 ajax 调用是异步的,一旦所有页面加载请求完成,浏览器应该退出“加载状态”,而不关心 ajax 调用何时完成。
是否有其他事件之后我应该拨打ajax 电话?
我也尝试将ajax 调用放在window.onload 事件回调中,但我仍然遇到同样的问题。
编辑: 代码非常简单。我在加载脚本的头部有一个带有几个脚本标签的 HTML 文件:
<head>
<script src="script1.js"></script>
<script src="script2.js"></script>
</head>
在我的一个脚本中:
$(document).ready(
// 3 ajax calls
);
我使用 Ajax 调用获取 JSON。 现在,我在开发工具包中看到,只有当所有这三个 ajax 调用都返回时,浏览器才会退出“加载”状态。 我还注意到,当我的页面加载网络请求被缓存时,浏览器不会等待这些 ajax 调用。但是对于空缓存,完成所有页面加载请求大约需要 3-4 秒,在这种情况下,ajax 调用也会导致浏览器保持“加载状态”。
请帮忙。 谢谢!
【问题讨论】:
-
在进行 ajax 调用时为什么不尝试 Async Option。并定义回调事件?
-
Ajax 调用默认是异步的,但是如果你仍然不能实现它,请定义它。你能告诉我们页面和代码还是把它放在 Fiddle Pls 上?
-
在所有过程完成后尝试 $(window).load() 它的工作
-
或尝试 $('selector').ajaxComplete()
-
你这样做一定有充分的理由,所以也许看看为什么服务器花了这么长时间而不是前端。