Home  >  Article  >  php教程  >  jquery ajax php+mysql 无刷新分页 详细实例

jquery ajax php+mysql 无刷新分页 详细实例

WBOY
WBOYOriginal
2016-06-13 11:31:001170browse

  最近在接触jquery和ajax,当前项目也会用到分页,为了用户体验更好一些,就准备用无刷新分页,这个demo很适合新手学习查看,写的比较清晰,话不多说,直接上代码吧。

  首先是html页面,index.html,代码如下:

<span  1</span> <span <!</span><span DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"</span><span ></span>
<span  2</span> <span <</span><span html </span><span xmlns</span><span ="http://www.w3.org/1999/xhtml"</span><span ></span>
<span  3</span> <span <</span><span head</span><span ></span>
<span  4</span> <span <</span><span meta </span><span http-equiv</span><span ="Content-Type"</span><span  content</span><span ="text/html; charset=utf-8"</span> <span /></span>
<span  5</span> <span <</span><span title</span><span ></span>php+mysql+ajax+jquery分页<span </</span><span title</span><span ></span>
<span  6</span> 
<span  7</span> <span <</span><span script </span><span type</span><span ="text/javascript"</span><span  src</span><span ="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"</span><span ></</span><span script</span><span ></span>
<span  8</span> <span <</span><span script </span><span type</span><span ="text/javascript"</span><span  src</span><span ="ajaxPager.js"</span><span ></</span><span script</span><span ></span>
<span  9</span> <span <</span><span style</span><span ></span>
<span 10</span> <span     #main</span><span {</span>
<span 11</span> <span         width</span><span :</span><span 980px</span><span ;</span>
<span 12</span> <span         margin</span><span :</span><span 0px auto</span><span ;</span>
<span 13</span>     <span }</span>
<span 14</span> <span     ul
</span><span 15</span>     <span {</span>
<span 16</span> <span         list-style</span><span :</span><span none</span><span ;</span>
<span 17</span> <span         margin</span><span :</span><span 0px</span><span ;</span>
<span 18</span>     <span }</span>
<span 19</span> <span     #list li</span><span {</span>
<span 20</span> <span         width</span><span :</span><span 220px</span><span ;</span>
<span 21</span> <span         height</span><span :</span><span 280px</span><span ;</span>
<span 22</span> <span         float</span><span :</span><span left</span><span ;</span>
<span 23</span> <span         margin-left</span><span :</span><span 10px</span><span ;</span>
<span 24</span>     <span }</span>
<span 25</span> <span     .pager .cur </span><span {</span>
<span 26</span> <span         border-top-color</span><span :</span><span  rgb(255, 255, 255)</span><span ;</span>
<span 27</span> <span         border</span><span :</span><span  1px solid #fff</span><span ;</span>
<span 28</span> <span         background</span><span :</span><span  0</span><span ;</span>
<span 29</span> <span         font-weight</span><span :</span><span  bold</span><span ;</span>
<span 30</span> <span         color</span><span :</span><span  #000</span><span ;</span>
<span 31</span>     <span }</span>
<span 32</span> <span     .pager a, .pager span </span><span {</span>
<span 33</span> <span         margin-top</span><span :</span><span  5px</span><span ;</span>
<span 34</span>     <span }</span>
<span 35</span> <span     .pager a, .pager span </span><span {</span>
<span 36</span> <span         background</span><span :</span><span  none repeat scroll 0 0 #fff</span><span ;</span>
<span 37</span> <span         border</span><span :</span><span  1px solid #e7ecf0</span><span ;</span>
<span 38</span> <span         color</span><span :</span><span  #0000cd</span><span ;</span>
<span 39</span> <span         float</span><span :</span><span  left</span><span ;</span>
<span 40</span> <span         height</span><span :</span><span  22px</span><span ;</span>
<span 41</span> <span         line-height</span><span :</span><span  22px</span><span ;</span>
<span 42</span> <span         margin-right</span><span :</span><span  5px</span><span ;</span>
<span 43</span> <span         overflow</span><span :</span><span  hidden</span><span ;</span>
<span 44</span> <span         text-align</span><span :</span><span  center</span><span ;</span>
<span 45</span> <span         text-decoration</span><span :</span><span  none</span><span ;</span>
<span 46</span> <span         width</span><span :</span><span  auto</span><span ;</span>
<span 47</span> <span         padding</span><span :</span><span  0 8px</span><span ;</span>
<span 48</span>     <span }</span>
<span 49</span> <span     .pager span </span><span {</span>
<span 50</span> <span         background</span><span :</span><span  none repeat scroll 0 0 #fff</span><span ;</span>
<span 51</span> <span         border</span><span :</span><span  1px solid #e7ecf0</span><span ;</span>
<span 52</span> <span         color</span><span :</span><span  #0000cd</span><span ;</span>
<span 53</span> <span         float</span><span :</span><span  left</span><span ;</span>
<span 54</span> <span         height</span><span :</span><span  22px</span><span ;</span>
<span 55</span> <span         line-height</span><span :</span><span  22px</span><span ;</span>
<span 56</span> <span         margin-right</span><span :</span><span  5px</span><span ;</span>
<span 57</span> <span         overflow</span><span :</span><span  hidden</span><span ;</span>
<span 58</span> <span         text-align</span><span :</span><span  center</span><span ;</span>
<span 59</span> <span         text-decoration</span><span :</span><span  none</span><span ;</span>
<span 60</span> <span         width</span><span :</span><span  auto</span><span ;</span>
<span 61</span> <span         padding</span><span :</span><span  0 8px</span><span ;</span>
<span 62</span>     <span }</span>
<span 63</span> <span     .pager </span><span {</span>
<span 64</span> <span         border-top</span><span :</span><span  0</span><span ;</span>
<span 65</span> <span         padding</span><span :</span><span  12px 0 30px 15px</span><span ;</span>
<span 66</span> <span         float</span><span :</span><span  left</span><span ;</span>
<span 67</span>     <span }</span>
<span 68</span> <span     .clearfix </span><span {</span>
<span 69</span> <span         display</span><span :</span><span  block</span><span ;</span>
<span 70</span>     <span }</span>
<span 71</span> <span     .pager </span><span {</span>
<span 72</span> <span         float</span><span :</span><span  left</span><span ;</span>
<span 73</span> <span         font-family</span><span :</span><span  Arial</span><span ;</span>
<span 74</span> <span         font-size</span><span :</span><span  13px</span><span ;</span>
<span 75</span>     <span }</span>
<span 76</span> <span     .clearfix </span><span {</span>
<span 77</span> <span     zoom</span><span :</span><span  1</span><span ;</span>
<span 78</span>     <span }</span>
<span 79</span> <span </</span><span style</span><span ></span>
<span 80</span> 
<span 81</span> 
<span 82</span> <span </</span><span head</span><span ></span>
<span 83</span> 
<span 84</span> <span <</span><span body</span><span ></span>
<span 85</span> 
<span 86</span> 
<span 87</span>     <span <</span><span div </span><span id</span><span ="main"</span><span ></span>
<span 88</span>         <span <</span><span div </span><span id</span><span ="pagecount"</span><span  class</span><span ="pager clearfix"</span><span ></</span><span div</span><span ><</span><span div </span><span id</span><span ="loading"</span><span ></</span><span div</span><span ></span>
<span 89</span>         <span <</span><span br </span><span /></span>
<span 90</span>         <span <</span><span br </span><span /></span>
<span 91</span>         <span <</span><span br </span><span /></span>
<span 92</span>         <span <</span><span br </span><span /></span>
<span 93</span>         <span <</span><span div </span><span id</span><span ="list"</span><span ></span>
<span 94</span>             <span <</span><span ul</span><span ></</span><span ul</span><span ></span>
<span 95</span>         <span </</span><span div</span><span ></span>
<span 96</span>     <span </</span><span div</span><span ></span>
<span 97</span> <span </</span><span body</span><span ></span>
<span 98</span> <span </</span><span html</span><span ></span>

 

  样式我随便写的,毕竟我样式写的很差,大家可以自己换样式的。

  然后就是js代码了,ajaxPager.js,代码如下:

  

<span   1</span> <span var</span> curPage = 1; <span //</span><span 当前页码</span>
<span   2</span> <span var</span><span  total,pageSize,totalPage;
</span><span   3</span> <span //</span><span 获取数据</span>
<span   4</span> <span function</span><span  getData(page){ 
</span><span   5</span> <span     $.ajax({
</span><span   6</span>         type: 'POST'<span ,
</span><span   7</span>         url: 'pages.php'<span ,
</span><span   8</span>         data: {'pageNum':page-1<span },
</span><span   9</span>         dataType:'json'<span ,
</span><span  10</span>         beforeSend:<span function</span><span (){
</span><span  11</span>             $("#loading").html("<img  id='loadin'g src='loading.gif' alt="jquery ajax php+mysql 无刷新分页 详细实例" >"<span );
</span><span  12</span> <span         },
</span><span  13</span>         success:<span function</span><span (json){
</span><span  14</span>             $("#loading").html(""<span );
</span><span  15</span>             $("#list ul"<span ).empty();
</span><span  16</span>             total = json.total; <span //</span><span 总记录数</span>
<span  17</span>             pageSize = json.pageSize; <span //</span><span 每页显示条数</span>
<span  18</span>             curPage = page; <span //</span><span 当前页</span>
<span  19</span>             totalPage = json.totalPage; <span //</span><span 总页数</span>
<span  20</span>             <span var</span> li = ""<span ;
</span><span  21</span>             <span var</span> list =<span  json.list;
</span><span  22</span>             $.each(list,<span function</span>(index,array){ <span //</span><span 遍历json数据列</span>
<span  23</span>                 li += "<li><a href='#'><img  src='"+array['pic']+"' alt="jquery ajax php+mysql 无刷新分页 详细实例" ></a><p>"+array['title'].substring(0,10)+"</p></li>"<span ;
</span><span  24</span> <span             });
</span><span  25</span>             $("#list ul"<span ).append(li);
</span><span  26</span> <span         },
</span><span  27</span>         complete:<span function</span>(){ <span //</span><span 生成分页条</span>
<span  28</span> <span             getPageBar();
</span><span  29</span> <span         },
</span><span  30</span>         error:<span function</span><span (){
</span><span  31</span>             alert("数据加载失败"<span );
</span><span  32</span> <span         }
</span><span  33</span> <span     });
</span><span  34</span> <span }
</span><span  35</span> 
<span  36</span> <span //</span><span 获取分页条</span>
<span  37</span> <span function</span><span  getPageBar(){
</span><span  38</span>     <span //</span><span 页码大于最大页数</span>
<span  39</span>     <span if</span>(curPage>totalPage) curPage=<span totalPage;
</span><span  40</span>     <span //</span><span 页码小于1</span>
<span  41</span>     <span if</span>(curPage<1) curPage=1<span ;
</span><span  42</span>     pageStr = "<span class=''>共"+total+"条"+curPage+"/"+totalPage+"</span>"<span ;
</span><span  43</span>     
<span  44</span>     <span //</span><span 如果是第一页</span>
<span  45</span>     <span if</span>(totalPage<=4<span )
</span><span  46</span> <span     {
</span><span  47</span>         <span if</span>(curPage==1<span ){
</span><span  48</span>             pageStr += "<span class='cur'>1</span>"<span ;
</span><span  49</span>             <span for</span>(<span var</span> i=2;i<=totalPage;i++<span )
</span><span  50</span> <span             {
</span><span  51</span>                 pageStr += "<a href='javascript:void(0)' rel='"+i+"'>"+i+"</a>"<span ;
</span><span  52</span> <span             }
</span><span  53</span>         }<span else</span><span {
</span><span  54</span>             pageStr += "<a href='javascript:void(0)' rel='1'><<</a><a href='javascript:void(0)' rel='"+(curPage-1)+"'><</a>"<span ;
</span><span  55</span>             <span for</span>(<span var</span> i=1;i<=totalPage;i++<span )
</span><span  56</span> <span             {
</span><span  57</span>                 <span if</span>(i==<span curPage)
</span><span  58</span> <span                 {
</span><span  59</span>                     pageStr += "<span class='cur'>"+i+"</span>"
<span  60</span> <span                 }
</span><span  61</span>                 <span else</span>
<span  62</span> <span                 {
</span><span  63</span>                     pageStr += "<a href='javascript:void(0)' rel='"+i+"'>"+i+"</a>"<span ;
</span><span  64</span> <span                 }
</span><span  65</span> <span             }
</span><span  66</span>             
<span  67</span> <span         }
</span><span  68</span> <span     }
</span><span  69</span>     <span else</span><span //</span><span 当页数大于5的时候就要这样显示1 2 3 4 ...</span>
<span  70</span> <span     {
</span><span  71</span>         <span if</span>(curPage<=3<span ){
</span><span  72</span>             <span if</span>(curPage==1<span )
</span><span  73</span> <span             {
</span><span  74</span>                 pageStr += "<span class='cur'>1</span>"<span ;
</span><span  75</span> <span             }
</span><span  76</span>             <span else</span>
<span  77</span> <span             {
</span><span  78</span>                 pageStr += "<a href='javascript:void(0)' rel='1'><<</a><a href='javascript:void(0)' rel='"+(curPage-1)+"'><</a>"<span ;
</span><span  79</span>                 pageStr += "<span class='cur'><a href='javascript:void(0)' rel='1'>1</a></span>"<span ;
</span><span  80</span> <span             }
</span><span  81</span>             <span for</span>(<span var</span> i=2;i<=4;i++<span )
</span><span  82</span> <span             {
</span><span  83</span>                 <span if</span>(i==<span curPage)
</span><span  84</span> <span                 {
</span><span  85</span>                     pageStr += "<span class='cur'>"+i+"</span>"
<span  86</span> <span                 }
</span><span  87</span>                 <span else</span>
<span  88</span> <span                 {
</span><span  89</span>                     pageStr += "<a href='javascript:void(0)' rel='"+i+"'>"+i+"</a>"<span ;
</span><span  90</span> <span                 }
</span><span  91</span> <span             }
</span><span  92</span>             pageStr += "<span class='cur'>...</span>"<span ;
</span><span  93</span>         }<span else</span><span {
</span><span  94</span>             pageStr += "<a href='javascript:void(0)' rel='1'><<</a><a href='javascript:void(0)' rel='"+(curPage-1)+"'><</a>"<span ;
</span><span  95</span>             pageStr += "<span class='cur'>...</span>"<span ;
</span><span  96</span>             <span if</span>(curPage>totalPage-2<span )
</span><span  97</span> <span             {
</span><span  98</span>                 <span for</span>(<span var</span> i=totalPage-2;i<=totalPage;i++<span )
</span><span  99</span> <span                 {
</span><span 100</span>                     <span if</span>(i==<span curPage)
</span><span 101</span> <span                     {
</span><span 102</span>                         pageStr += "<span class='cur'>"+i+"</span>"
<span 103</span> <span                     }
</span><span 104</span>                     <span else</span>
<span 105</span> <span                     {
</span><span 106</span>                         pageStr += "<a href='javascript:void(0)' rel='"+i+"'>"+i+"</a>"<span ;
</span><span 107</span> <span                     }
</span><span 108</span> <span                 }
</span><span 109</span> <span             }
</span><span 110</span>             <span else</span>
<span 111</span> <span             {
</span><span 112</span>                 pageStr += "<a href='javascript:void(0)' rel='"+(curPage-1)+"'>"+(curPage-1)+"</a>"<span ;
</span><span 113</span>                 pageStr += "<span class='cur'>"+curPage+"</span>"<span ;
</span><span 114</span>                 pageStr += "<a href='javascript:void(0)' rel='"+(parseInt(curPage)+1)+"'>"+(parseInt(curPage)+1)+"</a>"<span ;
</span><span 115</span>                 pageStr += "<span class='cur'>...</span>"<span ;
</span><span 116</span> <span             }
</span><span 117</span> <span         }
</span><span 118</span> <span     }
</span><span 119</span>     <span //</span><span 如果是最后页</span>
<span 120</span>     <span if</span>(curPage>=<span totalPage){
</span><span 121</span>         <span //</span><span pageStr += "<span>></span>   <span>>></span>";</span>
<span 122</span>     }<span else</span><span {
</span><span 123</span>         pageStr += "<a href='javascript:void(0)' rel='"+(parseInt(curPage)+1)+"'>></a><a href='javascript:void(0)' rel='"+totalPage+"'>>></a>"<span ;
</span><span 124</span> <span     }
</span><span 125</span>         
<span 126</span>     $("#pagecount"<span ).html(pageStr);
</span><span 127</span> <span }
</span><span 128</span> 
<span 129</span> $(<span function</span><span (){
</span><span 130</span>     getData(1<span );
</span><span 131</span>     $("#pagecount  a").live('click',<span function</span><span (){
</span><span 132</span>         <span var</span> rel = $(<span this</span>).attr("rel"<span );
</span><span 133</span>         <span if</span><span (rel){
</span><span 134</span> <span             getData(rel);
</span><span 135</span> <span         }
</span><span 136</span> <span     });
</span><span 137</span> });

 

  因为项目的需要,我这个页面页数显示只能显示几页,比如就这样  >>,要改显示的,就在ajaxPager.js里面改。

  $.ajax({ 中url: 'pages.php',处理就在pages.php中处理。那么就来看看pages.php中的代码:

  

<span  1</span> <?<span php
</span><span  2</span> <span include_once</span>('connect.php'<span );
</span><span  3</span> 
<span  4</span> <span $page</span> = <span intval</span>(<span $_POST</span>['pageNum'<span ]);
</span><span  5</span> 
<span  6</span> <span $result</span> = <span mysql_query</span>("select id from food"<span );
</span><span  7</span> <span $total</span> = <span mysql_num_rows</span>(<span $result</span>);<span //</span><span 总记录数</span>
<span  8</span> 
<span  9</span> <span $pageSize</span> = 8; <span //</span><span 每页显示数</span>
<span 10</span> <span $totalPage</span> = <span ceil</span>(<span $total</span>/<span $pageSize</span>); <span //</span><span 总页数</span>
<span 11</span> 
<span 12</span> <span $startPage</span> = <span $page</span>*<span $pageSize</span><span ;
</span><span 13</span> <span $arr</span>['total'] = <span $total</span><span ;
</span><span 14</span> <span $arr</span>['pageSize'] = <span $pageSize</span><span ;
</span><span 15</span> <span $arr</span>['totalPage'] = <span $totalPage</span><span ;
</span><span 16</span> <span $query</span> = <span mysql_query</span>("select id,title,pic from food order by id asc limit <span $startPage</span>,<span $pageSize</span>"<span );
</span><span 17</span> <span while</span>(<span $row</span>=<span mysql_fetch_array</span>(<span $query</span><span )){
</span><span 18</span>      <span $arr</span>['list'][] = <span array</span><span (
</span><span 19</span>          'id' => <span $row</span>['id'],
<span 20</span>         'title' => <span $row</span>['title'],
<span 21</span>         'pic' => <span $row</span>['pic'],
<span 22</span> <span      );
</span><span 23</span> <span }
</span><span 24</span> <span //</span><span print_r($arr);</span>
<span 25</span> <span echo</span> json_encode(<span $arr</span><span );
</span><span 26</span> ?>

 

  上面当然还有数据库连接了啦,这个应该很简单吧,还是贴出来connect.php:

  

<span  1</span> <?<span php
</span><span  2</span> <span include_once</span>('connect.php'<span );
</span><span  3</span> 
<span  4</span> <span $page</span> = <span intval</span>(<span $_POST</span>['pageNum'<span ]);
</span><span  5</span> 
<span  6</span> <span $result</span> = <span mysql_query</span>("select id from food"<span );
</span><span  7</span> <span $total</span> = <span mysql_num_rows</span>(<span $result</span>);<span //</span><span 总记录数</span>
<span  8</span> 
<span  9</span> <span $pageSize</span> = 8; <span //</span><span 每页显示数</span>
<span 10</span> <span $totalPage</span> = <span ceil</span>(<span $total</span>/<span $pageSize</span>); <span //</span><span 总页数</span>
<span 11</span> 
<span 12</span> <span $startPage</span> = <span $page</span>*<span $pageSize</span><span ;
</span><span 13</span> <span $arr</span>['total'] = <span $total</span><span ;
</span><span 14</span> <span $arr</span>['pageSize'] = <span $pageSize</span><span ;
</span><span 15</span> <span $arr</span>['totalPage'] = <span $totalPage</span><span ;
</span><span 16</span> <span $query</span> = <span mysql_query</span>("select id,title,pic from food order by id asc limit <span $startPage</span>,<span $pageSize</span>"<span );
</span><span 17</span> <span while</span>(<span $row</span>=<span mysql_fetch_array</span>(<span $query</span><span )){
</span><span 18</span>      <span $arr</span>['list'][] = <span array</span><span (
</span><span 19</span>          'id' => <span $row</span>['id'],
<span 20</span>         'title' => <span $row</span>['title'],
<span 21</span>         'pic' => <span $row</span>['pic'],
<span 22</span> <span      );
</span><span 23</span> <span }
</span><span 24</span> <span //</span><span print_r($arr);</span>
<span 25</span> <span echo</span> json_encode(<span $arr</span><span );
</span><span 26</span> ?>

 

  然后就完成了,具体思路很清晰,点击页数的时候jquery获取rel中的页面值,传进去数据库获取相应数据展现在页面上。

  然后还有数据库吧,我的表示这样的:

<span>1</span> <span>CREATE</span> <span>TABLE</span> <span>IF</span> <span>NOT</span> <span>EXISTS</span><span> `food` (
</span><span>2</span>   `id` <span>int</span>(<span>11</span>) <span>NOT</span> <span>NULL</span><span> AUTO_INCREMENT,
</span><span>3</span>   `title` <span>varchar</span>(<span>100</span>) <span>NOT</span> <span>NULL</span><span>,
</span><span>4</span>   `pic` <span>varchar</span>(<span>255</span>) <span>NOT</span> <span>NULL</span><span>,
</span><span>5</span>   <span>PRIMARY</span> <span>KEY</span><span> (`id`)
</span><span>6</span> ) ENGINE<span>=</span>MyISAM  <span>DEFAULT</span> CHARSET<span>=</span>utf8 AUTO_INCREMENT<span>=</span><span>31</span> ;

 我这边有一个demo,然后大家可以下载看看。多多指教。

http://pan.baidu.com/share/link?shareid=1518322039&uk=67299903

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn