Yii 1开发日记 -- Ajax实现点击加载下一页

  功能实现:先输出一页的内容,然后点击加载下一页,如图

  

  1.控制器中

 1     /**
 2      * 消费记录:列出用户购买章节的记录
 3      */
 4     public function actionMyPayHis()
 5     {
 6         //点击加载更多
 7         if( Yii::app()->request->isAjaxRequest ) {
 8             //分页
 9             $pg = isset( $_GET[ "pg" ] ) ? $_GET[ "pg" ] : 1;
10             $page = max( 0 , $pg );
11             $offset = $page * 3;
12             $accountLogs = B2cAccountLog::model()->findAll( array( ‘condition‘ => ‘user_id = :user_id and change_type = :change_type‘ ,
13                                                                    ‘params‘    => array( ‘:user_id‘ => Yii::app()->user->getId() , ‘:change_type‘ => B2cAccountLog::NOVEL_USER_READ_PAY ) ,
14                                                                    ‘order‘     => ‘change_time desc‘ ,
15                                                                    ‘offset‘    => $offset ,
16                                                                    ‘limit‘     => 3
17             ) );
18
19             $tpl = ‘<tr>
20                         <td class="text-center">%s</td>
21                         <td class="text-center">%s 桃花币</td>
22                         <td class="text-center">
23                             %s
24                         </td>
25                     </tr>‘;
26
27             $data = array();
28             $html = ‘‘;
29             foreach ( $accountLogs as $accountLog ) {
30                 $html .= sprintf( $tpl ,
31                     $accountLog->change_desc ,
32                     DycUtil::toFloat( $accountLog->user_money ) ,
33                     DycUtil::getTim2DateTime( $accountLog->change_time , 1 )
34                 );
35             }
36
37             $data = array( ‘type‘ => ‘ok‘ , ‘info‘ => $html );
38
39             echo CJSON::encode( $data );
40             return;
41
42         } else {
43
44             $accountLogs = B2cAccountLog::model()->findAll( array( ‘condition‘ => ‘user_id = :user_id and change_type = :change_type‘ ,
45                                                                    ‘params‘    => array( ‘:user_id‘ => Yii::app()->user->getId() , ‘:change_type‘ => B2cAccountLog::NOVEL_USER_READ_PAY ) ,
46                                                                    ‘order‘     => ‘change_time desc‘ ,
47                                                                    ‘offset‘    => 0 ,
48                                                                    ‘limit‘     => 3
49             ) );
50
51             $this->render( ‘myPayHis‘ , array( ‘accountLogs‘ => $accountLogs ) );
52         }
53
54     }

  先输出第一页的内容,再ajax请求输出下一页。

  2.视图中

 1     <div id="czjl" style="padding: 0 20px;">
 2         <table class="am-table">
 3             <thead>
 4             <tr>
 5                 <th class="text-center">图书章节</th>
 6                 <th class="text-center">消费</th>
 7                 <th class="text-center">时间</th>
 8             </tr>
 9             </thead>
10             <tbody id="data_tr">
11             <?php
12             foreach ($accountLogs as $accountLog) {
13                 ?>
14                 <tr>
15                     <td class="text-center"><?= $accountLog->change_desc ?></td>
16
17                     <td class="text-center"><?= DycUtil::toFloat( $accountLog->user_money ) ?>桃花币</td>
18                     <td class="text-center">
19                         <?= DycUtil::getTim2DateTime( $accountLog->change_time , 1 ) ?>
20                     </td>
21
22                 </tr>
23                 <?php
24             }
25             ?>
26             </tbody>
27         </table>
28     </div>
29     <div style="display: flex;justify-content: space-around;">
30         <div>
31             <span class="btn btn-default" id="loadmore">加载更多</span>
32         </div>
33     </div>

  加载更多,加一个 "id",绑定事件;"tbody"加一个"id",用来添加下一页的内容。

  3. JS实现

 1 <script type="application/javascript">
 2
 3     var url = ‘<?= $this->createUrl( ‘/Novel/Hyzx/MyPayHis‘ ) ?>‘;
 4     var i = 1;
 5     var load = $(‘#loadmore‘);
 6     //根据页数读取数据
 7     function getData(page) {
 8         i++; //页码自动增加,保证下次调用时为新的一页。
 9         $.ajax({
10             type: "get",
11             url: url,
12             data: {pg: page},
13             dataType: "json",
14             success: function (data) {
15                 if (data.info.length > 0) {
16                     $(‘#data_tr‘).append(data.info);
17                 } else {
18                     load.html(‘没有更多的数据了....‘);
19                     load.unbind()
20                 }
21             },
22             error:function( request, textStatus ){
23                 alert(‘请求失败,请稍候再试!‘ + textStatus);
24             }
25         });
26     }
27
28
29     //点击加载下一页
30     $(function () {
31         load.on(‘click‘, function(){
32             getData(i);
33         });
34     });
35 </script>

  核心代码,定义一个函数,然后点击时,调用。点击一次,"i"加1,保证最新一页。

  小记:小而美,工匠精神。

时间: 2024-11-03 03:24:15

Yii 1开发日记 -- Ajax实现点击加载下一页的相关文章

Discuz帖子列表页无法ajax加载下一页问题

上周末抽空重构了一下JX3PVE的PVE栏目,只上线了宏库栏目,结果出了一堆Bug.奈何公司这段时间都在搞完美假期这专题,太忙也没去处理.这不是周末拿时间来看一下. 发现其中有一个是点“下一页”ajax出现问题.找了好一会,纳闷ajax没提示出错呢. 原来 由于ajax请求没问题,但是却无法正常插入dom,于是……这个插入,竟然是用字符串匹配……... 醉了...手贱的我改成了…… 无语. 如果还有遇到此问题的小伙伴,最简单的办法把这里的class去掉即可. DZ的JS大多都是原生写的,大量的节

jquery,ajax页面内点击加载内容

<div class="chanppin_content" id="listsBox"></div> <a id="moreClick">查看更多</a> <script type="text/javascript"> var page = 1; var pageCount = 0; loadMore(); function loadMore(){ $.getJSON

Django+ajax实现页面底部加载

Django+ajax实现页面底部加载 需求:展示图片,当滚动条拖到页面底部时加载一部分图画. 问题:photo的展示使用的是django的QuerySet,对于ajax如何加载非常头痛,还专门补了一下js. 解决思路:用的取巧的办法,把photo先分页,然后ajax的load方法加载下一个页面的photo部分到当前页面来. 分页 第一步是把photo的QuerySet分页展示,我这里直接用127.0.0.1:8000/x/的url,所以在urls.py里这样写 url(r'^(?P<page>

jQuery+php+Ajax文章列表点击加载更多功能

jQuery+php+Ajax实现的一个简单实用的文章列表点击加载更多功能,点击加载更多按钮,文章列表加载更多数据,加载中有loading动画效果. js部分: 1 <script type="text/javascript" src="jquery.more.js"></script> 2 <script type="text/javascript"> 3 $(function() { 4 $('#more'

android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

转自:http://blog.csdn.net/jj120522/article/details/8229423 这次就不上图了,例子太多太多了,想必大家都见过.这个功能的实现,简直是开发者必备的. 我也不过多介绍了,网上详细介绍的博客太多太多了,若想深入了解,请参考网上其他博文. 在这里,我只是按照自己的理解,模拟实现了一个,顺便代码贡献出来. 我对之详细标明的注释,想必如果不懂的同学们,看注释也应该明白,前提是,你要耐心看,因为代码有点多,但是我整理过了,还算清晰. 详细代码: [java]

thinkPHP 点击加载更多

今天做了下点击加载更多,开始使用JSON返回做,可不知道哪里出问题,代码截图,希望可以指点我下 PHP部分: HTML: 这样msg是没数据的:......... 后面换了个办法,没返回json,具体这样 PHP: public function index_ajax() { $list=M('document')->where('status=1')->limit(0,5)->select(); $this->assign('list',$list); $this->dis

structs2注解+jsp+ajax实现post异步加载select

流程: 1.点击加载btn发起异步请求post 2.后台处理请求返回数据 3.前端获取数据成功,对数据进行处理 前端: html:首先要导入jq包,不然怎么用ajax呢. <script type="text/javascript" src="js/jquery.js"></script> <select name="warId" id="warId" style="height:100

VSTO学习笔记(三) 开发Office 2010 64位COM加载项

原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(Automation Executables) 2.Office加载项(COM or Excel Add-In) 3.Office文档代码或模板(Code Behind an Office Document or Template) 4.Office 智能标签(Smart Tags) 本次我们将学习使

[转]ASP.NET Ajax 客户端框架未能加载。

ASP.NET Ajax 客户端框架未能加载. 在网络上搜索到好几个都是说的什么是utf-8的问题, 我一般建网站的时候 直接就设置 成utf-8拉,但是我的这么也出现 这个问题呢,我重起了机器也不管用. 我想肯定是Web.config的问题,我更换了 新的,把自定和Service设置拷进区 都好了. 可是过了一段时间 又出现问题,到底这么回事的,哦,我修改了config里的<compilation debug="true"> 然后我把它改成false,刷新一下,正常加载,