微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

适用于PHP的AJAX分页解决方案

现在,我使用的分页系统需要网址

http://mypage.com/index.php?page=1
http://mypage.com/index.php?page=2
http://mypage.com/index.php?page=3
http://mypage.com/index.php?page=4
等等…

因此它使用$_GET方法来找出用户所在的页面.
我决定将我的大部分网站切换到Ajax,然后遇到了问题.当我使用Ajax在页面上加载新内容时,URL始终保持不变,例如http://mypage.com/index.php.因此,我使用的分页系统没有用.
我找不到高效的AJAX分页系统(例如,有些地方比较落后,每当用户单击下一页时,最需要用户将其滚动到该提示,因为当他们单击下一页时,它们始终位于页面底部等)

因此,我决定向您询问是否有人拥有适用于Ajax的有效分页解决方案.

需要分页的示例:

$sql = MysqL_query("SELECT * FROM myMembers WHERE username='$username' LIMIT 1") or die (MysqL_error("There was an error in connection"));

//Gather profile @R_630_4045@ion
while($row = MysqL_fetch_assoc($sql)){ 
$username = $row["username"];
$id = $row["id"];

$data_display .= '<b>'.Name.'</b> has an id of <span style="color: f0f0f0;">'.$id.'</span>';

}

<!doctype>
<html>
<?PHP echo "$data_display"; ?> //and I need to paginate this entries
</html>

jQuery,它将来自不同页面的新内容加载到#content div中

<script type="text/javascript">
function viewHome(){
    $('#woodheader').load("inc/home_top.PHP", function () {
            $(this).hide().fadeIn(700)
        });
    $('#content').html('<span class="loader">Loading..&nbsp;&nbsp;&nbsp;<img class="loaderimg" src="images/ajax_loader.gif"/></span>').load("inc/home.PHP", function () {
            $(this).hide().fadeIn(700)
        });
}
function viewAbout(){
    $('#woodheader').load("inc/about_top.PHP", function () {
            $(this).hide().fadeIn(700)
        });
    $('#content').html('<span class="loader">Loading..&nbsp;&nbsp;&nbsp;<img class="loaderimg" src="images/ajax_loader.gif"/></span>').load("inc/about.PHP", function () {
            $(this).hide().fadeIn(700)
        });
}
function viewProducts(){
    $('#woodheader').load("inc/products_top.PHP", function () {
            $(this).hide().fadeIn(700)
        });
     $('#content').html('<span class="loader">Loading..&nbsp;&nbsp;&nbsp;<img class="loaderimg" src="images/ajax_loader.gif"/></span>').load("inc/products.PHP", function () {
            $(this).hide().fadeIn(700)
        });
}
</script>

解决方法:

分页并不像您想象的那么难,可以使用jQuery的load()函数内容加载到具有页面内容的元素中.

例如,您有:

<div id="page-content"></div>
<a href="#" id="link1">Page 1</a>
<a href="#" id="link2">Page 1</a>
<a href="#" id="link3">Page 3</a>

<script>
$.ready(function(){
  var currPage = <?=$pageNumber; ?>; // The page number loaded on page refresh
  $('#link1,#link2,#link3').onclick(function(){
    // Get the first number inside the id
    var pageNum = parseInt($(this).attr('id'));

    // Don't load the same page
    if(currPage == pageNum) return;

    // Show loading animation or whatever

    // Load the page using ajax
    $('#page-content').load('pages.PHP?page='+pageNum, function(){
      // End loading animation
      currPage = pageNum;
    });

    return false; // Important for not scrolling up
  });
});
</script>

关于URL,当用户单击页面链接时,有三个选项可供选择:

>只需加载页面即可更改网址
>使用HTML5 history.pushState(请参阅MDN resource)(如果受支持),并将选项3作为不支持的浏览器的后备
>使用#page1,#page1等作为链接的href值,以便用户知道他们在哪个页面上并解析PHP中url的值:

$uri = explode('#page', $_SERVER['REQUEST_URI']);
$pageNumber = intval($uri[1]);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐