2012-05-10 81 views
0

我有一个页面,其中包含从db中检索的各种信息块。这些块被分成几个部分,目前所有的代码都有一个长的PHP页面,所以每次我加载一个页面时,它的显示都会有延迟。我希望能够更快地加载页面,并在内容将被加载的部分放置某种“加载...”或图像占位符。我发现它在其他网站上经常使用。我如何实现这一目标?我需要打破我的长PHP页面到:从数据库结果加载时显示占位符

  1. 主要布局页

  2. 将带有数据的每个块到一个单独的页面,

  3. 用途包括向插入到主页。

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

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

谢谢。

回答

2

只在您的主布局页面中包含您希望在页面初始加载时可见的元素。您应该拥有带JavaScript的占位符元素,您可以通过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请求是最有意义的。

同时请参阅该reference page对jQuery的AJAX功能

+0

这是伟大的!我是否正确地理解了你,我需要创建一个占位符,说

loading...
,并将加载图像占位符放在里面,当数据库驱动的内容准备就绪时,它将用我的外部PHP页面中已编译的HTML代替占位符图像? – santa

+0

是的。AJAX请求将被执行,并且如果它成功返回,上面的'success'函数将被调用并且传递后端脚本产生的所有输出(作为字符串)。 –

+0

快速问题。在我的script.php页面上我有分页机制。当我有一个很长的PHP页面时,我会将页面提交给php-self,并重新编译pge。现在结果包含在成功的ajax中,我如何让分页点击正常工作?我可以定位主页面,但是如何调用我的ajax脚本?或者我在script.php中添加类似的JS代码?感觉有点失落... – santa

1

由于您使用的是jQuery,显而易见的方式是让PHP脚本构建一个框架页面,然后使用javascript函数(Ajax)加载页面的不同部分,即使这样做的块,所以只有部分每个部分在每次加载。

1

你可以用页面布局构建一个php文件。在这个文件里面使用AJAX加载所有块的数据。你可以使用jQuery来进行AJAX调用。

当你执行ajax调用时,你可以放一些动画gif“加载...”,如果你搜索谷歌“加载gif”,它们有很多。

希望它有帮助。