【问题标题】:Ajax Array Display Control - PaginationAjax 数组显示控件 - 分页
【发布时间】:2011-04-19 12:34:16
【问题描述】:

我有一个区域,其中填充了来自 php mysql 查询的大约 100 条记录。

需要添加 ajax 分页含义首先加载 10 条记录,然后在用户单击让我们说“+”字符时填充下一个 20。

因此该区域将显示 20,而不是一次全部显示,然后在单击时显示,然后是下一个 20,下一个...等等,没有刷新。

我应该将 100 条记录转储到会话变量中吗?

是否应该在用户每次点击下一页触发器时调用 Myqsl 查询?

不确定什么是最好的方法...或解决这个问题的方法。

我担心数据库将从 100 个增加到 10,000 个。

非常感谢任何帮助方向。

【问题讨论】:

    标签: php javascript mysql ajax pagination


    【解决方案1】:

    如果您有一个经常查看(但不经常更新)的大型记录集,请查看 APC 以缓存数据并在会话之间共享。您还可以创建一个静态文件,在数据更改时重写。

    如果需要在页面上对数据进行排序/操作,您需要限制加载的记录数以防止 JavaScript 运行时间过长。 ExtJS 有一些很好的小部件可以做到这一点,只需为其提供 JSON 数据(在您的记录集上使用 PHP 的 encode 方法)。我们与 Oracle 进行了一次交谈,并且相当轻松地完成了 20 条记录的分页。

    如果您的大型记录集经常更新,并且数据必须“实时”准确,那么您将面临一些重大挑战。我会查看彗星、猿或网络工作者的轮询/推送解决方案,并构建您的 API 以仅处理对“核心”数据的更新——同样,可能缓存在服务器上,而不是每次都从数据库中提取。

    【讨论】:

    • 感谢您提供如此详细的回答。
    【解决方案2】:

    您的 ajax 调用应该调用一个页面,该页面只从数据库中提取所需的确切行数。所以从第一页的查询中选择前 20 行,依此类推。您的 ajax 调用可以采用一个名为 pagenum 的参数,这取决于您实际从数据库中提取的记录。不需要会话变量。

    【讨论】:

    • 我在最后一部分迷路了。所以我将 pagenum 保留在会话变量上,然后用 ajax 调用正确更新它?
    • 我通常将其作为查询字符串,所以我的 ajax 页面将类似于 ajax.php?pagenum=1
    • ajax 页面应该返回以下要显示的内容之一,xml、json 或直接 html
    • 好的,所以每次调用都会将 pagenum 传递给脚本,并且脚本将返回,比如说第二页 21 - 41,发回 pagenum++?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    • 2012-08-31
    • 2011-11-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多