闽公网安备 35020302035485号
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>堆代码 duidaima.com</title>
</head>
<body>
<table id="dy_tb" border="1" cellspacing="0">
<tr>
<td>序号</td>
<td>书名</td>
<td>作者</td>
<td>发行时间</td>
</tr>
</table>
<button id="prev">上一页</button>
<button id="next">下一页</button>
<script>
let pageNum=1;
let oTb = document.getElementById("dy_tb");
let oPrev = document.getElementById("prev");
let oNext = document.getElementById("next");
let init
// 定义获取表格数据函数
function getTableData(pageIndex){
let request = new XMLHttpRequest();
request.onreadystatechange = function(){
if(this.readyState !== 4){
return;
}
if(this.status >= 200 && this.status < 300 || this.status === 304){
renderDataToTable(request.responseText)
}
}
request.open("GET", `/getData?page=${pageIndex}&limit=4`, true);
request.send(null);
}
function renderDataToTable(data_str){
let jsonData = JSON.parse(data_str)
let str = `<tr>
<td>序号</td>
<td>书名</td>
<td>作者</td>
<td>发行时间</td>
</tr>`
for(let d of jsonData){
str += `<tr><td>${d.index}</td>
<td>${d.name}</td>
<td>${d.author}</td>
<td>${d.publish}</td></tr>`
}
oTb.innerHTML = str
}
oPrev.addEventListener("click", () => {
oNext.removeAttribute('disabled') // 移除下一页的禁用状态
pageNum -= 1
if(pageNum === 0){
pageNum=1
}else if(pageNum === 1){
oPrev.setAttribute('disabled', true) // 设置上一页为禁用状态
getTableData(pageNum)
}else{
getTableData(pageNum)
}
})
oNext.addEventListener("click", () => {
oPrev.removeAttribute('disabled') // 移除上一页的禁用状态
pageNum += 1
window.history.pushState({page: pageNum}, null, window.location.href)
if(pageNum > 3){
pageNum = 3
}else if(pageNum === 3){
oNext.setAttribute('disabled', true) // 设置下一页为禁用状态
getTableData(pageNum)
}else{
getTableData(pageNum)
}
})
getTableData(pageNum) // 加载页面第一页数据
oPrev.setAttribute('disabled', true) // 设置上一页为禁用状态
window.addEventListener('popstate',(e) => {
let page = 1;
if(e.state !== null){
page = e.state.page
}
getTableData(page)
pageNum = page
})
</script>
</body>
</html>
后端代码from flask import Flask,render_template,request, jsonify
import time
app = Flask(__name__)
# 虚拟数据
BOOK_DATA = [
[
{"index":1, "name":"书名-1", "author":"作者-1","publish":"2023-05-01"},
{"index":2, "name":"书名-2", "author":"作者-2","publish":"2023-05-02"},
{"index":3, "name":"书名-3", "author":"作者-3","publish":"2023-05-03"},
{"index":4, "name":"书名-4", "author":"作者-4","publish":"2023-05-04"},
],
[
{"index":5, "name":"书名-5", "author":"作者-5","publish":"2023-05-05"},
{"index":6, "name":"书名-6", "author":"作者-6","publish":"2023-05-06"},
{"index":7, "name":"书名-7", "author":"作者-7","publish":"2023-05-07"},
{"index":8, "name":"书名-8", "author":"作者-8","publish":"2023-05-08"},
],
[
{"index":9, "name":"书名-9", "author":"作者-9","publish":"2023-05-09"},
{"index":10, "name":"书名-10", "author":"作者-10","publish":"2023-05-10"},
{"index":11, "name":"书名-11", "author":"作者-11","publish":"2023-05-11"},
{"index":12, "name":"书名-12", "author":"作者-12","publish":"2023-05-12"},
]
]
@app.route('/')
def index():
return render_template('index.html')
@app.route("/getData", methods=["GET"]) # /getData?page=${pageIndex}&limit=4
def getData():
# 获取前端传递的页码参数
page = request.args.get("page")
int_page = int(page)
data=BOOK_DATA[int_page-1]
return jsonify(data)
if __name__ == '__main__':
app.run(host="0.0.0.0", port=8765, debug=True)
但是上面的情况,点击下一页之后,点击浏览器后退的时候,就没有办法回到上一页,效果大概是这样
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>堆代码 duidaima.com</title>
</head>
<body>
<table id="dy_tb" border="1" cellspacing="0">
<tr>
<td>序号</td>
<td>书名</td>
<td>作者</td>
<td>发行时间</td>
</tr>
</table>
<button id="prev">上一页</button>
<button id="next">下一页</button>
<script>
let pageNum=1;
let oTb = document.getElementById("dy_tb");
let oPrev = document.getElementById("prev");
let oNext = document.getElementById("next");
let init
// 定义获取表格数据函数
function getTableData(pageIndex){
let request = new XMLHttpRequest();
request.onreadystatechange = function(){
if(this.readyState !== 4){
return;
}
if(this.status >= 200 && this.status < 300 || this.status === 304){
renderDataToTable(request.responseText)
}
}
request.open("GET", `/getData?page=${pageIndex}&limit=4`, true);
request.send(null);
}
function renderDataToTable(data_str){
let jsonData = JSON.parse(data_str)
let str = `<tr>
<td>序号</td>
<td>书名</td>
<td>作者</td>
<td>发行时间</td>
</tr>`
for(let d of jsonData){
str += `<tr><td>${d.index}</td>
<td>${d.name}</td>
<td>${d.author}</td>
<td>${d.publish}</td></tr>`
}
oTb.innerHTML = str
}
oPrev.addEventListener("click", () => {
oNext.removeAttribute('disabled') // 移除下一页的禁用状态
pageNum -= 1
if(pageNum === 0){
pageNum=1
}else if(pageNum === 1){
oPrev.setAttribute('disabled', true) // 设置上一页为禁用状态
getTableData(pageNum)
}else{
getTableData(pageNum)
}
})
oNext.addEventListener("click", () => {
oPrev.removeAttribute('disabled') // 移除上一页的禁用状态
pageNum += 1
window.history.pushState({page: pageNum}, null, window.location.href)
if(pageNum > 3){
pageNum = 3
}else if(pageNum === 3){
oNext.setAttribute('disabled', true) // 设置下一页为禁用状态
getTableData(pageNum)
}else{
getTableData(pageNum)
}
})
getTableData(pageNum) // 加载页面第一页数据
oPrev.setAttribute('disabled', true) // 设置上一页为禁用状态
window.addEventListener('popstate',(e) => {
let page = 1;
if(e.state !== null){
page = e.state.page
}
getTableData(page)
pageNum = page
})
</script>
</body>
</html>
这个时候,点击下一页之后,再点击浏览器后退按钮的时候,就可以退回到上一页的关联效果。下面是效果