php代码
<?php
//include "db_connect.php";
$db = new MySQLi("localhost", "root", "password", "paginate");
$db->set_charset('utf8mb4');
header('Content-type: application/json;charset=utf-8');
$total = 0; // 表格数据总行数
$per_page = 6; // 每页行数
$current_page = 1; // 当前显示第几页
$total_pages = 0; // 总页数
// 获取当前页数
if (!empty($_GET['current_page'])) {
$current_page = $_GET['current_page'];
}
// 获取表格数据总行数
$query1 = 'select count(*) from user';
$row1 = $db->query($query1);
if ($row1 && $rowd = $row1->fetch_row()) {
$total = $rowd[0];
}
// 获取总页数
$total_pages = ceil($total / $per_page);
// 分页
$pre = ($current_page - 1) * $per_page;
$query2 = "select * from user limit $pre,$per_page";
$rows = $db->query($query2);
$arr = [];
if($rows) {
$arr = $rows->fetch_all(MYSQLI_ASSOC);
}
$pagination = [
'total' => $total,
'per_page' => $per_page,
'current_page' => $current_page,
'total_pages' => $total_pages
];
array_push($arr, $pagination);
echo json_encode($arr, true);
postman截图:
js代码:
window.onload = function () {
getData(1);
}
function addURLParam(url, name, value) {
url += (url.indexOf("?") == -1 ? "?" : "&");
url += encodeURIComponent(name) + "=" + encodeURIComponent(value);
return url;
}
function getData(page) {
var data = document.getElementById("data");
var xhr = new XMLHttpRequest();
xhr.onreadystatechange = function () {
if (xhr.readyState == 4 && xhr.status == 200) {
var jsonText = xhr.responseText;
console.log(JSON.parse(jsonText));
}
}
var url = "paginate.php";
url = addURLParam(url, "current_page", "page");
xhr.open("get", url, true);
xhr.send();
}
chrome console前面的数据库的内容均没有
应该是
$query2 = "select * from user limit $pre,$per_page";
$rows = $db->query($query2);
$arr = [];
if($rows) {
$arr = $rows->fetch_all(MYSQLI_ASSOC);
}
这里的sql出了问题,因为没加if($rows)之前会有错,然而我很奇怪为什么php可以正常运行,php版本是7.0.8
巴扎黑2017-05-16 13:13:56
是js 没有正确传参数进addURLParam()的问题
url = addURLParam(url, "current_page", "page");
改为
url = addURLParam(url, "current_page", page);
说起来真是羞耻,我发布问题后发现了这个bug,编辑修改了一次问题,但是学校断电电脑已经没电了,然后我就没能测试。。。。。。
不过重点是addURLParam方法我是最后才加的,原来是直接
xhr.open("get", "paginate.php?current_page="+page, true);
addURLParam()是js高级程序设计上的方法,里面说
使用GET请求经常会发生的一个错误,就是查询的字符串格式有问题。查询字符串中每个参数的名称和值都必须使用encodeURIComponent()进行编码,然后才能放到URL的末尾
知道原因的朋友可以就这点解答下,我先去搜索了~