<p id="wrapper">
<p id="scroller">
<article class="task-list-wrapper">
<web:taskList var="taskList" status="1" keyword="${keyword}" pageidx="${pageidx}" pagesize="15" />
<c:choose>
<c:when test="${taskList != null && fn:length(taskList) > 0}">
<c:forEach var="task" varStatus="vs" items="${taskList}">
<section>
<a href="">
<h4>
<i></i>
<span>${task.title}</span>
<b>公示中</b>
</h4>
<p>
<span class="price">¥${task.startBudgetPrice }-${task.endBudgetPrice}元 </span>
<span><web:taskBrowseByTaskId taskId="${task.taskId}"/>人浏览</span>
<span>${task.applayNumber}人申请</span>
</p>
</a>
</section>
</c:forEach>
</c:when>
</c:choose>
</article>
<p class="loadMore">
<a href="javascript:;">加载更多...</a>
</p>
</p>
</p>
关键就在于前台保存一个当前分页数,传给后台根据分页取数据
可以页面加载完毕直接请求ajax数据根据分页参数p
不知道你要的是分多次加载,还是先请求全部数据再分多次显示。
如果是前者,需要后端提供可以分页的api,然后前端这边发送页码等参数过去,就可以实现分页效果。
如果是后者,无非就是一个
listNum = listNum+15
的问题,每次点击都多显示出15个,又两种方案:一个是先把所有的dom都加载,然后用display:none
的方式模拟;一个是在js先把数据都先得到,在分批次append到dom。这两个对题主应该没有问题。核心在于append追加,然后page++ 自己领悟下就ok了
看你的样子用的应该是java写的后端(
<c:when>, <c:forEach>...
)。为了实现加载更多,其实就是点击按钮后在不刷新页面的情况下添加更多的内容显示到当前页面中。用ajax拉取数据,前提是后端能够根据条件(例如:页号、分类、关键字什么。。。)来获取数据。为了方便对需要显示的<article></article>
的内容进行维护,我们可以使用模板类,将你上面那段页面代码中的jstl
标签换成用javascript来进行逻辑判断,循环的部分既可以使用模板提供的语法进行循环,也可以在js中循环拼接生成你所需要的html
片段。页面代码修改为类似这样
模板代码,也就是将之前删除的部分独立开来成一个模板,我这里用的是
arttemplate
这个js插件,这个算是用的比较多的了吧,楼主可以试一下准备工作到此结束,现在开始展示核心代码了,此处的示例简化了一些参数的逻辑判断,因为我并不清楚你后台返回的数据到底是什么样的,但是示范作用可以达到!
我也是新手,这是前不久做的一个项目的内容的总结吧,有问题就谢谢大神能够指出错误了或者更好的方案了!
说一下我的思路,在页面初始化的时候显示15个,这个你一定没问题的,然后再你需要点击的按钮上绑定click的回调函数,在这个函数里面你再写代码,每次获取15个显示出来就好了
点击事件绑定异步请求操作,之后根据一定的规则(如显示多少个?),append到list容器中,是这么个思路吗?
后台支持分页请求,前台记录页码。 第一页页码1,加载更多页码加1为2, 直到请求结果没有数据为止
用ajax异步,得到数据生成html接到页面里