AJAX可以用来加载一个模块,而页面的其余部分仍在加载


Can AJAX be used to load a module while the rest of the page is still loading?

我正在为Joomla编写一个模块。它将显示通过SOAP请求获得的数据。SOAP请求的问题在于,检索数据可能需要长达5秒的时间。这个Joomla模块将出现在一个页面上,页面上有许多其他Joomla的模块和其他内容。我担心的是,如果这个Joomla模块处理SOAP请求最多需要5秒,那么它将延迟加载页面的其余部分。我们都去过因为页面的一部分而延迟加载的网站,我不希望这种情况发生。

我想知道解决方案是否是让Joomla模块使用AJAX(我还没有使用AJAX的经验)来执行SOAP请求(目前正在使用PHP),并以某种方式允许加载页面的其余部分,而SOAP请求返回数据可能需要5秒才能显示。

对于这个问题,什么是可行的好办法?缓存数据并不是一个真正的选择,因为它是及时的。谢谢

我会选择Ajax。

使用window.onload()触发ajax来获取数据。唯一的问题是,在获取数据之前会加载整个页面,这可能会导致显示最终数据的延迟。

代码会因偏好而异,但ajax的原理是:

  1. 创建占位符或包含占位符内容(或不包含任何内容)
  2. 在事件上(在本例中为页面就绪)请求数据
  3. 数据准备就绪后,用您的数据替换占位符内容

这还有一个额外的优势,你也可以使用"刷新"按钮来触发更改,这样用户就可以在不重新加载原始页面的情况下请求更新的数据。

Ajax非常值得学习,因为无论是使用jquery还是简单的js都是一件轻而易举的事。W3schools.com有一个很好的教程。