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
是js 沒有正確傳遞參數進addURLParam()的問題
改為
說起來真是羞恥,我發布問題後發現了這個bug,編輯修改了一次問題,但是學校斷電電腦已經沒電了,然後我就沒能測試。 。 。 。 。 。
不過重點是addURLParam方法我是最後才加的,原來是直接
addURLParam()是js高階程式設計上的方法,裡面說
知道原因的朋友可以就這點解答下,我先去搜尋了~