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

  

  1.控制器中

     /**
* 消费记录:列出用户购买章节的记录
*/
public function actionMyPayHis()
{
//点击加载更多
if( Yii::app()->request->isAjaxRequest ) {
//分页
$pg = isset( $_GET[ "pg" ] ) ? $_GET[ "pg" ] : 1;
$page = max( 0 , $pg );
$offset = $page * 3;
$accountLogs = B2cAccountLog::model()->findAll( array( 'condition' => 'user_id = :user_id and change_type = :change_type' ,
'params' => array( ':user_id' => Yii::app()->user->getId() , ':change_type' => B2cAccountLog::NOVEL_USER_READ_PAY ) ,
'order' => 'change_time desc' ,
'offset' => $offset ,
'limit' => 3
) ); $tpl = '<tr>
<td class="text-center">%s</td>
<td class="text-center">%s 桃花币</td>
<td class="text-center">
%s
</td>
</tr>'; $data = array();
$html = '';
foreach ( $accountLogs as $accountLog ) {
$html .= sprintf( $tpl ,
$accountLog->change_desc ,
DycUtil::toFloat( $accountLog->user_money ) ,
DycUtil::getTim2DateTime( $accountLog->change_time , 1 )
);
} $data = array( 'type' => 'ok' , 'info' => $html ); echo CJSON::encode( $data );
return; } else { $accountLogs = B2cAccountLog::model()->findAll( array( 'condition' => 'user_id = :user_id and change_type = :change_type' ,
'params' => array( ':user_id' => Yii::app()->user->getId() , ':change_type' => B2cAccountLog::NOVEL_USER_READ_PAY ) ,
'order' => 'change_time desc' ,
'offset' => 0 ,
'limit' => 3
) ); $this->render( 'myPayHis' , array( 'accountLogs' => $accountLogs ) );
} }

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

  2.视图中

     <div id="czjl" style="padding: 0 20px;">
<table class="am-table">
<thead>
<tr>
<th class="text-center">图书章节</th>
<th class="text-center">消费</th>
<th class="text-center">时间</th>
</tr>
</thead>
<tbody id="data_tr">
<?php
foreach ($accountLogs as $accountLog) {
?>
<tr>
<td class="text-center"><?= $accountLog->change_desc ?></td> <td class="text-center"><?= DycUtil::toFloat( $accountLog->user_money ) ?>桃花币</td>
<td class="text-center">
<?= DycUtil::getTim2DateTime( $accountLog->change_time , 1 ) ?>
</td> </tr>
<?php
}
?>
</tbody>
</table>
</div>
<div style="display: flex;justify-content: space-around;">
<div>
<span class="btn btn-default" id="loadmore">加载更多</span>
</div>
</div>

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

  3. JS实现

 <script type="application/javascript">

     var url = '<?= $this->createUrl( '/Novel/Hyzx/MyPayHis' ) ?>';
var i = 1;
var load = $('#loadmore');
//根据页数读取数据
function getData(page) {
i++; //页码自动增加,保证下次调用时为新的一页。
$.ajax({
type: "get",
url: url,
data: {pg: page},
dataType: "json",
success: function (data) {
if (data.info.length > 0) {
$('#data_tr').append(data.info);
} else {
load.html('没有更多的数据了....');
load.unbind()
}
},
error:function( request, textStatus ){
alert('请求失败,请稍候再试!' + textStatus);
}
});
} //点击加载下一页
$(function () {
load.on('click', function(){
getData(i);
});
});
</script>

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

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

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

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

    上周末抽空重构了一下JX3PVE的PVE栏目,只上线了宏库栏目,结果出了一堆Bug.奈何公司这段时间都在搞完美假期这专题,太忙也没去处理.这不是周末拿时间来看一下. 发现其中有一个是点“下一页”aja ...

  2. thinkphp+ajax 实现点击加载更多数据

    https://blog.csdn.net/a898712940/article/details/78545599?utm_source=blogxgwz8 适用范围:thinkphp3.2和thin ...

  3. ajax点击加载更多数据图片(预加载)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

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

    jQuery+php+Ajax实现的一个简单实用的文章列表点击加载更多功能,点击加载更多按钮,文章列表加载更多数据,加载中有loading动画效果. js部分: <script type=&qu ...

  5. PHP+Ajax点击加载更多列表数据实例

    一款简单实用的PHP+Ajax点击加载更多列表数据实例,实现原理:通过“更多”按钮向服务端发送Ajax请求,PHP根据分页参数查询将最新的几条记录,数据以JSON形式返回,前台Query解析JSON数 ...

  6. PHP+Ajax点击加载更多内容 -这个效果好,速度快,只能点击更多加载,不能滚动自动加载

    这个效果好,速度快,只能点击更多加载,不能滚动自动加载 一.HTML部分 <div id="more"> <div class="single_item ...

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

    原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...

  8. Knockout应用开发指南 第六章:加载或保存JSON数据

    原文:Knockout应用开发指南 第六章:加载或保存JSON数据 加载或保存JSON数据 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地 ...

  9. mui点击加载,下拉刷新,上下整合代码

    mui点击加载,下拉刷新,上下整合代码 mui的是上拉加载,但是老大说要做成点击加载,所以就改了一些 代码应该是有些问题的,测到了大家就自己改下. 首先要说明的是,有下拉刷新的页面一定要是双webvi ...

随机推荐

  1. 函数返回多个值(c/c++)

    当我们在处理一个数组的时候常常会碰到这样的问题:输入一个数组,和数组的一个元素,返回该元素所在行数和列数.这样就需要返回多组两个值,且组数不定.上述类型的函数在c语言程序里面存在两个问题.第一,函数只 ...

  2. Android——Handler

    Handler——是Android给我们提供用来更新UI的一套机制,也是一套消息处理机制,可以发送也可以处理消息 主要作用:1)在新启动的线程中发送消息:2)在主线程中获取.处理消息. (想想银行取钱 ...

  3. BZOJ1257 [CQOI2007]余数之和sum

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000 作者博客:http://www.cnblogs.com/ljh2000-jump/ ...

  4. 内存VSS/RSS/PSS/USS名词解释

    VSS(virtual set size)虚拟耗用内存(包含共享库占用的内存) RSS(Resident set size)实际使用物理内存(包含共享库占用的内存) RSS是进程实际驻存在物理内存的部 ...

  5. JavaScript工具代码

    html编码 function htmlEscape(sHtml){ return sHtml && sHtml.replace(/[<>&"]/g, f ...

  6. checkbox做全选按钮

    1.先写一个html页面,里面写一个全选按钮和几个复选框,实现下面2个要求 (1)点击全选按钮选中时,所有的复选框选中. (2)点击全选按钮取消选中时,所有复选框取消选中. <input typ ...

  7. jshint字段的意义

    1.安装jshint插件    npm install jshint -g 2.在需要对JS进行语法检测的文件上一层目录添加.jshintrc文件 .jshintrc是一个对象,类似: { " ...

  8. Applying vector median filter on RGB image based on matlab

    前言: 最近想看看矢量中值滤波(Vector median filter, VMF)在GRB图像上的滤波效果,意外的是找了一大圈却发现网上没有现成的code,所以通过matab亲自实现了一个,需要学习 ...

  9. 调用Interop.zkemkeeper.dll无法使用解决方案

    调用Interop.zkemkeeper.dll无法使用 已经注册dll成功但是还是报错 检索 COM 类工厂中 CLSID 为 {00853A19-BD51-419B--2DABE57EB61F} ...

  10. video.js播放mp4文件

    HTML5的标签 video 支持的mp4编码为视频编码 H.264 音频AAC 参考网址 http://www.w3school.com.cn/html5/html_5_video.asp 视频格式 ...