晚上好,
在关于对json编码数据进行分页的一些指示之后。
我一直在关注stackoverflow上的其他一些页面,由于某些原因似乎无法解决能够对返回的json数据进行分页的问题。
我查看了以下页面:How to use jQuery to paginate JSON data?,PHP/JSON-jquery pagination和http://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,我可以对它进行分页并将其调整得很好,并且当我向前或向后移动时它会切换页面
提前致谢(道歉,如果这个问题看起来真的很愚蠢)
答案 0 :(得分:1)
如果你可以在php中管理分页,那么用ajax做起来应该不难:
data
行就会变成:data: {pageNum: XX},
$_GET('pageNum')
和每页的项目数量来设置LIMIT
子句的正确参数。d
中返回的数据一样。loadit
函数,使其接受参数 - 页码 - 并添加事件处理程序以捕获分页链接上的所有点击并将其传递给loadit()
函数答案 1 :(得分:1)
AJAX的一个主要好处是,您可以加载对页面的更改,而无需发送全新页面的请求。使用AJAX时,要意识到JavaScript将动态执行所有请求,PHP将为JavaScript请求提供数据。在您的情况下,我建议使用查询参数或其他东西向PHP发信号通知它应该生成哪些数据。例如,您可能希望使用$ _GET ['startingFrom']变量来检查是否应该从初始偏移量加载数据。然后,MySQL查询将获取数据,PHP将输出指定数据的的JSON。当用户单击页面上的“下一步”按钮时,您可以调用如下函数:
function clickedNext() {
startingFrom += 30;
$.ajax('fia.php', {
data: {
startingFrom: startingFrom
}, ...
});
}
答案 2 :(得分:1)
这是一般的想法(没有错误检查,但它应该让你开始) 在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();
}
});