Yii 1开发日记 -- Ajax实现点击加载下一页
功能实现:先输出一页的内容,然后点击加载下一页,如图

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实现点击加载下一页的更多相关文章
- Discuz帖子列表页无法ajax加载下一页问题
上周末抽空重构了一下JX3PVE的PVE栏目,只上线了宏库栏目,结果出了一堆Bug.奈何公司这段时间都在搞完美假期这专题,太忙也没去处理.这不是周末拿时间来看一下. 发现其中有一个是点“下一页”aja ...
- thinkphp+ajax 实现点击加载更多数据
https://blog.csdn.net/a898712940/article/details/78545599?utm_source=blogxgwz8 适用范围:thinkphp3.2和thin ...
- ajax点击加载更多数据图片(预加载)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- jQuery+php+Ajax文章列表点击加载更多功能
jQuery+php+Ajax实现的一个简单实用的文章列表点击加载更多功能,点击加载更多按钮,文章列表加载更多数据,加载中有loading动画效果. js部分: <script type=&qu ...
- PHP+Ajax点击加载更多列表数据实例
一款简单实用的PHP+Ajax点击加载更多列表数据实例,实现原理:通过“更多”按钮向服务端发送Ajax请求,PHP根据分页参数查询将最新的几条记录,数据以JSON形式返回,前台Query解析JSON数 ...
- PHP+Ajax点击加载更多内容 -这个效果好,速度快,只能点击更多加载,不能滚动自动加载
这个效果好,速度快,只能点击更多加载,不能滚动自动加载 一.HTML部分 <div id="more"> <div class="single_item ...
- VSTO学习笔记(三) 开发Office 2010 64位COM加载项
原文:VSTO学习笔记(三) 开发Office 2010 64位COM加载项 一.加载项简介 Office提供了多种用于扩展Office应用程序功能的模式,常见的有: 1.Office 自动化程序(A ...
- Knockout应用开发指南 第六章:加载或保存JSON数据
原文:Knockout应用开发指南 第六章:加载或保存JSON数据 加载或保存JSON数据 Knockout可以实现很复杂的客户端交互,但是几乎所有的web应用程序都要和服务器端交换数据(至少为了本地 ...
- mui点击加载,下拉刷新,上下整合代码
mui点击加载,下拉刷新,上下整合代码 mui的是上拉加载,但是老大说要做成点击加载,所以就改了一些 代码应该是有些问题的,测到了大家就自己改下. 首先要说明的是,有下拉刷新的页面一定要是双webvi ...
随机推荐
- 排序算法汇总(C/C++实现)
前言: 本人自接触算法近2年以来,在不断学习中越多地发觉各种算法中的美妙.之所以在这方面过多的投入,主要还是基于自身对高级程序设计的热爱,对数学的沉迷.回想一下,先后也曾参加过ACM大大小小的 ...
- 尚硅谷-Maven笔记
- 练手小游戏(代码篇之敌人AI
诶呀~又没有更新微博,去拔牙了,疼死了,休息了几天过来接着写代码~ 首先是Base.写了一个框架,照别人扒的. Base分三部分,AILocomotion(AI移动),Steering(行为基类),V ...
- C#并发编程
并发编程,一直是小白变成(●—●)的一个坎.平时也用到过不少并发编程操作,在这里进行一下记录. 多线程并不是唯一 并发:同时做多件事情. 多线程:并发的一种形式,采用多线程来执行程序. 并行处理:把正 ...
- ios 快速审核
https://developer.apple.com/contact/app-store/?topic=expedite
- [转] mysql 存储引擎
最常用的存储引擎 innodb MyISAM MyISAM,这种效率高,不支持事务,不支持外键,每个表有单独的存储文件(多个),方便管理. innodb,一般默认的都是innodb,效率也不低,支持事 ...
- 接口测试 postman
1.可以应用一些简单的测试点 2. api有多个域名,放进collection里面进行批量测试,点击左上角'runner'
- thinkphp如何一次性的上传多个文件,在文件域中可以多选?
可以做到类似于某度网盘的样式吗? 文件夹的命名, 可以用单数, 也可以用复数, 在同一个项目中, 只要统一就好了. 毕竟项目开发不同于英语写作. 建议使用缩写, 不管是不是缩写都用单数, 这样简洁,容 ...
- ZOJ3944 People Counting ZOJ3939 The Lucky Week (模拟)
ZOJ3944 People Counting ZOJ3939 The Lucky Week 1.PeopleConting 题意:照片上有很多个人,用矩阵里的字符表示.一个人如下: .O. /|\ ...
- C(C++)/ 数据结构 链表
内容概括: 一.链表简介及创建列表 二.添加节点 三.链表排序 代码编译平台: CentOS 6.4 64b 一.链表简介及创建列表: 传统数组缺点: 传统数组长度需要事先设定,不能改变,内存由系统自 ...