我有多个复选框组,如果选中它的值,则使用jquery传递给对象中的php页面,我得到的结果都很好。现在我想对结果进行分页。我不知道该如何解决这个问题。因为使用分页不会返回AJAXPOST传递的任何值。我的JS:
$(":checkbox").on('change', function() {
var mygroup = {};
$(':checkbox:checked').each(function(i) {
var val = this.value;
var name = this.name;
mygroup[name] = (mygroup[name] || []).concat([val]);
});
var itemsPerPage = 5;
if(typeof url == 'undefined' ){
url = "finalprocess1.php?page=1&items_per_page="+itemsPerPage;
}
$.ajax({
type: "POST",
url: 'finalprocess.php',
data: mygroup,
success: function(data) {
$.getJSON(url, function(data){ //NOT SURE IF I CAN DO THIS
var result = userTemplate({users : data.users}) //UNDERSCORE TEMPLATING
$("#theresult").html(result);
});
}
});
});
答案 0 :(得分:0)
你应该在php端的查询中添加一个 LIMIT 和 OFFSET 子句,根据你的页面限制取一些范围:(例如使用普通的sql,php和PDO)
$limit = $_GET['items_per_page']; //Page limit
//Get request page, if not set to 1
!null == $_GET['page'] ? $page = $_GET['page'] : $page = 1;
//Get total rows count
$totalRows = $this->db->query('SELECT FOUND_ROWS from items')->fetchColumn();
//Calculate number of pages
$totalPages = ceil($totalRows / $limit);
//Show next or previous button only when needed validation
$hasPrevPage = $page > 1 ? true : false;
$hasNextPage = $page < $totalPages ? true : false;
//Calculate offset
$offset = ($page - 1) * $limit;
$sql = "SELECT * from items
LIMIT :pageLimit OFFSET :offset"; //The standard pagination clause
$query = $this->db->prepare($sql);
$query->bindValue(':pageLimit', $limit);
$query->bindValue(':offset', $offset);
$query->execute();
return $query->fetchAll();
然后在您的视图中,您应该创建两个链接,上一个和下一个,保留您的请求URI并修改页面参数,下一页为+1,前一页为-1,以便您可以导航结果
就像你在这里一样:url = "finalprocess1.php?page=1&items_per_page="+itemsPerPage;
但修改页面参数:
prevUrl = "finalprocess1.php?page=" + (page-1) + "&items_per_page=" + itemsPerPage;
nextUrl = "finalprocess1.php?page=" + (page+1) + "&items_per_page=" + itemsPerPage;
确保将这些验证传递给js,仅在需要时显示按钮,并防止偏移错误。
$hasPrevPage = $page > 1 ? true : false;
$hasNextPage = $page < $totalPages ? true : false;