【问题标题】:Paginating AJAX JSON returned data分页 AJAX JSON 返回数据
【发布时间】:2014-03-13 04:27:34
【问题描述】:

大家晚上好,

就在真正对 json 编码数据进行分页的一些指针之后。

我一直在查看 stackoverflow 上的其他一些页面,但由于某种原因,我似乎无法对返回的 json 数据进行分页。

我查看了以下页面:How to use jQuery to paginate JSON data?PHP/JSON-jquery paginationhttp://www.9lessons.info/2010/10/pagination-with-jquery-php-ajax-and.html

我有以下页面:

fia.php(数据库脚本)

<?php

include('constants.inc.php');

$result=mysql_query("SELECT id, firstname, lastname FROM ".PERSON." ORDER BY lastname ASC, firstname ASC LIMIT 0, 30");
$num=mysql_numrows($result);

$data = array();

while ($row = mysql_fetch_row($result))
{
    $data[] = $row;
}

echo json_encode($data);
?>

fi.php(显示结果)

<?php
include('header.php');
?>
<script>
$(document).ready(function()
{
function loadit()
{
    $.ajax(
    {
        url: "fia.php",
        data: "",
        dataType: "json",
        success: function(d)
        {
            for (var i in d)
            {
                var r = d[i];

                var id = r[0];
                var fname = r[1];
                var lname = r[2];
                $('#stuff').append('<br/><b>ID</b> '+id+'<br/><b>Name</b> '+fname+' '+lname+'');
            }
        }
    });
}
loadit();
});
</script>
<div id="stuff">Stuff goes here</div>
<?php
include('footer.php');
?>

我似乎无法通过 ajax 调用将页面变量传递给 php 脚本。我只是通过数据传递页面变量吗?如果是这样,我如何让分页显示在返回的结果下 - 只是寻找一些关于它如何可以完成

的指针

如果我只使用 PHP,我可以对它进行分页和范围调整,它会在我向前或向后移动时切换页面

提前致谢(如果这个问题看起来很愚蠢,我们深表歉意)

【问题讨论】:

    标签: php ajax json pagination


    【解决方案1】:

    如果你可以只用 php 来管理分页,那么使用 ajax 应该不会那么难:

    1. 您需要将页码(以及可选的每页项目数)发送到您的 php 脚本,因此您的 data 行将变为:data: {pageNum: XX},
    2. 在您的 php 脚本中,您将使用 $_GET('pageNum') 和每页的项目数量来为 LIMIT 子句设置正确的参数。
    3. 在您的 php 脚本中,您还需要获取项目总数,以便您可以将该数字和数据项发送回 ajax 调用的成功函数。
    4. 在 ajax 调用的成功函数中,您可以使用 javascript 构建内容和分页,就像在 php 中使用 d 中返回的数据一样。
    5. 您需要修改您的 loadit 函数,使其接受一个参数 - 页码 - 并添加一个事件处理程序来捕获分页链接上的所有点击并将它们传递给您的 loadit() 函数

    【讨论】:

      【解决方案2】:

      AJAX 的主要优点之一是您可以将更改加载到页面,而无需发送对全新页面的请求。使用 AJAX 时,请意识到 JavaScript 将即时执行所有请求,而 PHP 将为 JavaScript 请求提供数据。在您的情况下,我建议使用查询参数或其他东西向 PHP 发出它应该产生什么数据的信号。例如,您可能希望使用 $_GET['startingFrom'] 变量来检查是否应该从初始偏移量加载数据。然后,MySQL 查询将获取数据,PHP 将为 指定数据 输出 JSON。当用户单击页面上的“下一步”按钮时,您可能会调用如下函数:

      function clickedNext() {
          startingFrom += 30;
          $.ajax('fia.php', {
              data: {
                  startingFrom: startingFrom
              }, ...
          });
      }
      

      【讨论】:

        【解决方案3】:

        这是一般的想法(没有错误检查等,但它应该让你开始) 在php文件中

        $page = $_POST['page'];  // Numbers 1 - whatever
        $limit = 30;  // you could also have this be a parameter passed to the script
        $offset = ($page -1) * $limit;
        
        
        $slimit = " LIMIT ".$limit . " OFFSET ". $offset;
        $sQuery = "SELECT id, firstname, lastname FROM ".PERSON." ORDER BY lastname ASC, firstname ASC" .$limit;
        

        在javascript中

        $(document).ready(function()
        {
             var page = 0;
        function loadit()
        {
            $.ajax(
            {
                url: "fia.php",
                data: {page: page},
                type: 'post',
                dataType: "json",
                success: function(d)
                {
                    for (var i in d)
                    {
                        var r = d[i];
        
                        var id = r[0];
                        var fname = r[1];
                        var lname = r[2];
                        $('#stuff').append('<br/><b>ID</b> '+id+'<br/><b>Name</b> '+fname+' '+lname+'');
                    }
                }
            });
        }
        loadit();
        
        nextpage = function() {
           page++;
           loadit();
        }
        prevpage = function() {
           page--;
           loadit();
        }
        });
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-18
          • 2015-04-30
          • 2013-08-02
          • 1970-01-01
          • 2016-09-16
          • 2020-07-15
          • 1970-01-01
          • 2017-10-22
          相关资源
          最近更新 更多