PHP or jQuery/PHP pagination


PHP or jQuery/PHP pagination

我有一个预先编写的PHP类,它是我为分页而编写的。这很好,但随着我越来越多地将我的网站与jQuery和PHP结合起来,我觉得有必要将PHP和jQuery ajax调用结合起来进行分页。

我的问题或担忧是,任何有用的反馈都将不胜感激:

a) 基本假设是,如果我使用jQuery,我将不再有示例products.php?page=2,但只有products.php作为jQuery会使用ajax提取内容,所以没有页面重新加载,但SEO不需要页面的实际URL吗?谷歌将如何索引结果?

b) 只读教程有两种类型。一种是使用PHP从服务器收集所有内容,然后将其"分类"到页面中,使页面几乎立即进行(因此初始加载时间较长,但页面仍在运行中,另一种是根据用户的选项进行独立的ajax调用)。这被认为是所有方面的最佳实践(加载,SEO,用户体验)。

参考一些好的材料或教程会很棒!

只是想问一个问题:你不会再拥有这些链接了,这并不完全正确,因为正如你正确认为的那样,有些用户没有启用JS,还有一些像谷歌这样的爬虫。因此,像"products.php?page=2"这样的链接肯定会在接下来的几年里继续存在。但这里有一种结合SEO/没有JS的用户和AJAX的可能性,对于那些启用了它的人来说:

<a href="products.php?page=2" onclick="loadPage('products.php',2);return false;">
 Next Page
</a>

编辑:您也可以在onlclick上运行另一个PHP脚本,也许是loadProductsFrom('get_products.php', 2);,通过该脚本,函数应该从服务器加载JSON产品对象,类似于James Smiths的答案,但通过AJAX将其显示给用户。这可能会减少流量和下载时间,但还会导致一些(或更多)开销。因此,在这种情况下,对用户的好处是显而易见的。

另一个选项是将所有数据加载到javascript对象中,例如:

$strSql = "Select * from products";
$objResult = mysql_query($strSql);
$arrData = array();
while($objRow = mysql_fetch_array($objResult)){
 $objData = new stdClass();
 $objData->name = $objRow['name'];
 /* add more data here */
 $arrData[] = $objData;
}
<script type="text/javascript">
var arrData =  <?php echo json_encode($arrData); ?> 
</script> 

现在你可以将这个arrData传递给任何jquery分页插件,它将为你处理所有的分页工作,因为数据是压缩形式的,加载时间也会很长,这样你的页面将有更好的搜索引擎可见性。。希望这能有所帮助。。