0

我有一个页面,其中包含从 db 检索到的各种信息块。这些块被安排成部分,目前所有代码都带有一个很长的 PHP 页面,所以每次我加载一个页面时,它的显示都会有延迟。我希望能够更快地加载页面并在将加载内容的部分中放置某种“正在加载...”或图像占位符。我经常在其他网站上看到它。我该如何做到这一点?我是否需要将我的长 PHP 页面分解为:

  1. 主布局页面

  2. 将每个带有 db 数据的块放入单独的页面中,并且

  3. 使用包含插入到主页。

在生成内容时如何放置“加载”?

只是想更好地理解这个过程。我也使用 jQuery。也许有一个插件可以帮助解决这个问题?

谢谢。

4

3 回答 3

2

在您的主布局页面中仅包含您希望在页面初始加载时可见的那些元素。您应该拥有带有 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 上)。

Structured this way, it makes the most sense to me to make 1 ajax request per container that you would like to fill.

Please also check out the reference page for jQuery's ajax function

于 2012-05-10T14:10:04.907 回答
1

由于您使用的是 jQuery,因此显而易见的方法是让 PHP 脚本构建一个骨架页面,然后使用 javascript 函数 (Ajax) 加载页面的不同部分,甚至以块的形式进行加载,因此只加载每个部分的一部分每次。

于 2012-05-10T14:06:05.377 回答
1

您可以使用页面布局构建一个 php 文件。在此文件中,使用 AJAX 从所有块中加载数据。您可以使用 jQuery 进行 AJAX 调用。

当你执行 ajax 调用时,你可以放一些动画 gif “Loading...”,如果你搜索 google “loading gif”,就会有很多。

希望能帮助到你。

于 2012-05-10T14:07:42.787 回答