我有一个页面,其中包含从数据库检索的各种信息块。这些块被排列成几个部分,目前所有这些代码都在一个很长的PHP页面中,所以每次我加载一个页面时,它的显示都会有延迟。我希望能够更快地加载页面并放置某种"加载..."或将加载内容的部分中的图像占位符。我经常在其他网站上看到它。我该如何做到这一点?我需要将我的长 PHP 页面分解为:
-
主布局页
-
将包含来自 db 的数据的每个块放入单独的页面中,然后
-
使用包含插入到主页中。
生成内容时,我将如何放置"加载"?
只是想更好地了解这个过程。我也使用 jQuery。也许有一个插件可以帮助解决这个问题?
谢谢。
在主布局页面中仅包含您希望在页面最初加载时可见的元素。 您应该具有带有 ID 的占位符元素,这些元素可以通过 JavaScript 访问,您希望从服务器获取内容。
使用 jQuery 的 ajax 函数将内容从单独的请求加载到服务器:
$.ajax({
url: '/path/to/script.php',
data: 'any=get&variables=you&would=like&to=set', // can also be passed as an object
success: function( html ) {
// The argument passed to the success function is ALL of the output
// of your 'script.php'
$('#containerid').html( html );
}
});
在您的后端 PHP 脚本中,只需echo
出您想要显示的内容。 您可以选择将内容作为 JSON 对象传递回去,这是一种更可取的方法,但需要在客户端进行更多处理(必须先解析对象,然后才能访问它。 请参阅 PHP 的 json_encode 函数和 JSON.org 以获取有关 JSON 的更多信息)。
以这种方式构建,对我来说,对您想要填充的每个容器发出 1 个 ajax 请求是最有意义的。
另请查看jQuery的ajax函数的参考页面
由于你使用的是jQuery,显而易见的方法是让PHP脚本构建一个骨架页面,然后使用javascript函数(Ajax)加载页面的不同部分,甚至可以在块中执行此操作,以便每次只加载每个部分的一部分。
您可以使用页面布局构建一个 php 文件。在此文件中,使用 AJAX 从所有块加载数据。您可以使用 jQuery 进行 AJAX 调用。
当你执行ajax调用时,你可以放一些动画gif"加载...",如果你搜索谷歌"加载gif",有很多。
希望对您有所帮助。