1. 程式人生 > >利用Ajax實現分頁快取

利用Ajax實現分頁快取

用原生JavaScript寫資料分頁快取,看教學視訊寫的,下面是詳細程式碼。

<!doctype html>

<html>
<head>
<title>index</title>
<meta charset="utf-8">
<!-- <link rel="stylesheet" href="css/demo.css"> -->
<style>
body{
margin:0;
padding:0;
}
.wrap{
margin:30px auto;
border:1px solid;
width:500px;
}
.flex_row{
padding:0;
display:flex;
flex-direction:row;
list-style:none;
justify-content:space-around;
align-items:center;
}
.flex_row li{
border:1px solid;
width:40px;
height:40px;
text-align:center;
font-weight:bold;
line-height:40px;
cursor:pointer;
}
.itemsflex_row{
position:relative;
color:#000;
text-decoration:none;
margin:0;
padding:10px 0;
display:flex;
flex-direction:row;
align-items:center;
justify-content:space-around;
border-bottom:1px solid gray;
}
.ft{
/* position:absolute;
right:16px;
top:16px; */
}
.img{
width:50px;
height:45px;


}
.img img{
width:45px;
height:45px;
}
.bd{
width:380px;
height:19px;
}
.bd p{
margin:0;
padding:0;
width:78%;
height:18px;
overflow:hidden;
text-overflow:ellipsis;
}
</style>
</head>
<body>
<div class="wrap flex_column">
<div class="content flex_column">

</div>
<div class="page">
<ul class="flex_row">
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
<li>6</li>
</ul>
</div>
</div>
<script>
/*
const 常量
addEventListener('click', pageList, false); 事件監聽


toLowerCase 轉小寫
if(a in b){ }
for in ;  array.push()
將陣列轉成字串 array.join
字串轉json物件 JSON.parse
str 
    `
<a href="${data[i].url}" class="itemsflex_row load">
<div class="img">
<img src="${data[i].picUrl}" alt=""/>
</div>
</a>
`
div.innerHTML=str 將字串寫入div
console.time('正在拉取資料');  console.timeEnd('正在拉取資料');

 */

//常量
const url='https://route.showapi.com/181-1?';
//獲取div
var oCon=document.querySelector('.content');
var oUl=document.querySelector('.flex_row');


var page=1;//初始化頁碼
var cache={};//快取池


//新增點選事件監聽
oUl=addEventListener('click', pageList, false);


//獲取每頁的資料
function pageList(e){
if(e.target.nodeName.toLowerCase()==='li'){
//點選獲取對應的原始碼 1,2,3...
page=e.target.innerHTML*1;
//判斷json中是否有該頁快取了
if(page in cache){
console.log('資料已經快取了,頁碼:'+page);
//直接渲染資料元件
showPage(cache[page]);
}else{
getJson();//獲取資料
}
}
}


//獲取資料
getJson();
function getJson(){
console.time('正在拉取資料');
//獲得陣列
var params=[];
//建立Ajax物件
var xhr=new XMLHttpRequest();
var sendData={
'showapi_appid':'30603',//賬號
'showapi_sign':'98960666afeb4992ae91971d13494090',//密碼
'page':page,//第幾頁資料
'num':8//幾條資料
}


//json轉陣列
for(key in sendData){
params.push(key+'='+sendData[key]);
}
//將陣列轉成字串
var postData=params.join('&');


xhr.open('GET',url+postData,true);
xhr.send(null)
xhr.onreadystatechange=function(){
if(xhr.readyState==4&&xhr.status==200){
//獲得json資料
var dataList=JSON.parse(xhr.response).showapi_res_body.newslist;
cache[page]=dataList;//快取資料
showPage(dataList);//呼叫渲染資料
}
}
}


//資料渲染元件
function showPage(data){
var len=data.length;//長度預存
var str='';//初始化模板
for(var i=0;i<len;i++){
str+=
`
<a href="${data[i].url}" class="itemsflex_row load">
<div class="img">
<img src="${data[i].picUrl}" alt=""/>
</div>
<div class="bd">
<p class="label">${data[i].title}</p>
</div>
<div class="ft">&GT;</div>
</a>
`
}
oCon.innerHTML=str;//更改oCon的內容為str
console.timeEnd('正在拉取資料');
//停止一個通過 console.time() 啟動的計時器
//需要停止的計時器名字。一旦停止,計時器所經過的時間會被自動輸出到控制檯。
}
</script>
</body>


</html>

相關推薦

利用Ajax實現快取

用原生JavaScript寫資料分頁快取,看教學視訊寫的,下面是詳細程式碼。 <!doctype html> <html> <head><title>index</title><meta charset="u

jQuery 插件(jQuery.pagination.js)ajax 實現

height var 實現 before 狀態 pin 好的 調用 是否 首先需要引入jQuery 再次需要引入 <script src="jquery/jquery.pagination.js"></script>同時也要引入 <link r

MVCEasyUI+jQuery+EF+Ajax實現+條件查詢

Controller程式碼: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using

lay-ui +ajax實現

效果圖: 1.建立html頁面 01.html(前臺檔案) 2.建立index.php(後臺檔案) ------------------熱身結束,開始正式分頁之旅------------------ 3.在html頁面中引入layui需要用到的css以及js,還有我們自己額

ajax實現的區域性重新整理(基於Jeesite框架)

因為jeesite框架帶的分頁實現它的重新整理是整個jsp頁面的重新整理,所以這一點就很苦惱。下面我用ajax來解決這個問題。 點選分頁時觸發ajax事件,將後臺需要的引數通過ajax傳過去,然後後臺返回的資料再ajax裡畫的html部分顯示出來,主意你需要重新整理拿個部分

AJAX實現效果

歡迎使用Markdown編輯器寫部落格 本Markdown編輯器使用StackEdit修改而來,用它寫部落格,將會帶來全新的體驗哦: Markdown和擴充套件Markdown簡潔的語法 程式碼塊高亮 圖片連結和圖片上傳 LaTex數學公式 UML序列

利用iTextSharp實現功能

string[] htmlTextArr=Regex.Split(htmlText,"##",RegexOptions.IgnoreCase); MemoryStream outputStream = new MemoryStream(); Document doc = n

ajax實現無重新整理 (已除錯通過)

<html xmlns="http://www.w3.org/1999/xhtml" ><head runat="server"><title>Ajax無重新整理分頁</title><script language="javascript">var

初識Vue.js 利用iview實現查詢和條件查詢

最近新專案前端框架用的jquery+vue+iview  起初可以說是對vue一無所知,但是,經過近十天的應用,也掌握了一些東西,今天主要梳理一下關於自己今天用到vue做查詢和分頁,用於分享給大家以及給自己以後作為review。廢話不說,直接懟程式碼。前臺頁面如下:這些標籤是

利用資料庫實現,並顯示在Table中

資料庫實現每次獲得N(可以更改)條資料並下一次跳過已獲得的資料 MYsql:    String sql = "select * from GoodsType LIMIT "+start+","+sum;為Mysql資料庫SQL:       String sql = "s

SSH三大框架的整合+利用Ajax實現無重新整理

以下是我利用Struts2.3.24、Spring4.0、Hibernate4.2 結合Mysql資料庫進行的ssh整合,實現分頁需要json.js 首先ssh的整合需要匯入所有的jar包 在web.xml <?xml version="1.0" e

Ajax方式加載列表實現

rst join appid subst getx ntp none sta oot 在前面:   最近需要用到這個功能,所以這幾天一直在研究這個,目前大致功能已實現,後續需要完善,但需要的功能點已完成,記錄下; 1、分頁功能引入bootstrap的分頁插件:

js呼叫ajax根據後臺返回的總數前端設定每的條數實現功能

有時候前端需要實現分頁功能,但是後臺只給我們返回來總數,每頁顯示多少條資料需要我們前端來設定,貌似這個有點欺負人,哈哈哈。。話不多說直接上程式碼: (這裡需要用到layui外掛,js檔案自己去官網下載哦) var pageNumber=1;//第幾頁 var sumCount=0; //總共

ajax前端實現

本來不打算重複造輪子的,網上也已經有了很多關於前端分頁的框架,外掛等等,但是還是打算寫出來是因為前段時間有一個功能模組需要用到前端分頁,然後找了很多框架,以及外掛,發現其內容非常的複雜或者有的乾脆就是不能用的,一氣之下就準備自己動手寫一個,下面貼出程式碼。。 到自己寫的時候其實發現,這個還是挺簡單的,邏輯程

實現layUI的Ajax非同步功能

1. laypage模組自行到官方檢視官方文件。任何資料都不及官方文件專業、詳細。  https://www.layui.com/doc/modules/laypage.html    官方分頁文件 https://www.layui.com/demo/layp

MVC3.0 Razor實現Ajax資料

資料分頁一隻是一個老生常談的問題,只要是做系統開發,一般都會牽扯到。最新學習了Razor,用到分頁功能,分享下如何實現Ajax分頁。 1.準備工作    網上有現成的分頁工具 MVCPager,最新的是1.5版本,綜合比較後感覺這個控制

tp5,ajax jquery 實現

1,html,css 部分,自行引入jquery  <style>   .table-bg{border-collapse:collapse !important;}   .table-bg th{border-bottom-width: 0px !im

利用Mybatis攔截器實現查詢

手寫Mybatis攔截器 版本 Spring Boot 2.0.3.RELEASE Mybatis自定義攔截器 如果有閱讀過我之前一篇部落格 Hibernate 重新整理上下文 的朋友應該還記得 Hibernate 的上下文中可以新增自定義的事件監聽器。當初是為

ajax實現功能

 整體思路:將頁號傳遞到後臺PHP程式,PHP程式根據頁號,從資料表中查詢對應的內容,再返回給前端的ajax程式,最後顯示. 引用ajax分頁外掛:是一個基於jQuery的分頁外掛-pagination。     &

mui上拉載入通過ajax獲取資料,實現

上拉重新整理程式碼 $(document).ready(function(){ //上拉載入下拉重新整理 mui.init({ pullRefresh: {