You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pagination.js实现AJAX分页时pageSize属性失效问题求助

解决pagination.js中pageSize不生效的问题

看起来你遇到的核心问题是分页插件没有按照指定的pageSize切割数据,导致第一页直接显示了所有内容。我们一步步来排查并解决:

问题分析

从你的代码来看,有两个关键问题导致了这个现象:

1. 模板函数的变量覆盖错误

你的simpleTemplating函数里,每次循环都用html = "running" + index直接覆盖变量,这会导致最终只返回最后一条数据的内容。不过你提到显示了所有数据,说明你实际代码里可能是用了累加(比如html +=),但即使这样,插件没有分页的话,传入callback的data还是全部数据,自然会显示所有内容。

2. 手动设置totalNumber干扰分页逻辑

你手动指定了totalNumber: 20,但Flickr的API返回的items数量可能和这个值不匹配,这会打乱pagination.js的自动分页计算,导致插件没有正确对数据进行分页切割。

修复步骤

步骤1:修正模板函数

确保模板函数正确累加每条数据的内容,而不是覆盖:

function simpleTemplating(data) {
  var html = ''; // 初始化空字符串
  $.each(data, function (index, item) {
    // 可以根据需求渲染内容,比如显示图片或文本
    html += `
      <div class="photo-item">
        <p>running${index}</p>
        <img src="${item.media.m}" alt="Cat photo">
      </div>
    `;
  });
  return html;
}

步骤2:调整pagination配置

移除手动设置的totalNumber,让插件自动从返回的items数组中计算总数据量;同时将pageSize设置为你期望的3条:

$('#demo').pagination({
  dataSource: 'https://api.flickr.com/services/feeds/photos_public.gne?tags=cat&amp;tagmode=any&amp;format=json&amp;jsoncallback=?',
  locator: "items",
  pageSize: 3, // 设置为每页3条
  pageRange: 2,
  ajax: {
    beforeSend: function () {
      $(".dataContainer").html('Loading data from flickr.com ...');
    }
  },
  callback: function (data, pagination) {
    var html = simpleTemplating(data);
    $(".dataContainer").html(html);
  }
});

步骤3:验证插件行为

修改后,插件会自动从Flickr返回的items数组中获取总条数,然后按照pageSize:3进行客户端分页,每次callback传入的data都会是当前页的3条数据,这样就能正确显示分页内容了。

额外提示

  • 确保你使用的是最新版本的pagination.js,旧版本可能对JSONP数据源的处理存在兼容问题。
  • 如果后续需要切换为服务器端分页,你需要调整API支持分页参数(比如page、pageSize),并在插件配置中开启serverSide: true,当前场景是客户端分页,不需要这个设置。

内容的提问来源于stack exchange,提问作者Nisha Basha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:15:00