Ajax簡介
AJAX即“Asynchronous Javascript And XML”(異步JavaScript和XML),是指一種創建交互式網頁應用的網頁開發技術。
AJAX = 異步 JavaScript和XML(標准通用標記語言的子集)。
AJAX 是一種用於創建快速動態網頁的技術。
通過在後台與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。
傳統的網頁(不使用 AJAX)如果需要更新內容,必須重載整個網頁頁面。
實現每一種功能都有各種各樣的方法和思路,今天總結我的一個小小的加載功能。
加載很常見,每一位手機控都對她再熟不過了。每次我們在刷微博、朋友圈、空間······,滑到一定的量時,會提醒上滑加載更多,這是一種加載方式;還有一種就是點擊加載,點擊加載一定的量,再點擊,再加載一定的量(說了一大堆廢話)。
現在我們就來說說ajax逐個加載數據,類似這樣的數據列表。
先是顯示10個,然後點擊加載更多,再顯示10個·····
一、思路
一般使用ajax加載的話,一下會加載全部數據,這次要控制量的加載,那就要用到判斷,判斷加載到10個停止加載,後面通過點擊按鈕,在接著加載完的10個後面繼續加載。
要想控制只加載10個怎麼辦捏。不能通過遍歷的 i 來判斷 10個,因為加載完10個後後面還要加載,這樣下一個10個就不好判斷了,所以需要定義一個新的變量,來計算加載的個數,
可以這樣寫:
var ci = 0; for(var i = 0; i < data.list.length; i++){ ci++; if(ci> 10){ break; } }
然後需要再加載10個,再調用這個方法,所以這個方法需要聲明一個函數名,下次需要用的時候在調用,如果需要傳參也可以。現在還有個問題,第一次進來加載完10個後,需要再加載前10個數據接著後面的json數據,怎麼辦呢???
沒關系,可以通過調用上面定義好的函數,然後傳參。參數怎麼計算呢???
先想一個參數和什麼有關系,和 i 有關系,i 和什麼有關系呢?或者說什麼可以影響 i 呢?
好像只有它的值才會影響(那不是廢話嗎),這樣的話它的值就不能是一個不變的數了,只能是一個變量,那麼變量從哪裡來呢???
別忘了我們還有一個點擊事件,先定義一個 點擊次數 的變量 var clickNum = 0,因為每次加載時10個,所以 i 的值應該為:
i = 10*clickNum,這是每次加載第一個數據的索引值。這樣我們就解決了上面那個問題。
此時還有問題要解決,當數據全部點擊加載完後,點擊按鈕需要隱藏,那怎麼計算數據加載完了呢???
我們可以通過 點擊的次數clickNum 來計算,因為每次加載10個,所以可以計算出一共需要加載的次數 parseInt((data.list.length)/10)+1,為什麼加載的次數要加 1 呢?
因為parseInt()是取整,比如21/10=2,但實際需要加載 3 次,所以要加 1 ,巧的是我們第一次加載不用點擊,浏覽器已加載進來就讀取了10個數據,
所以clickNum = parseInt((data.list.length)/10),當clickNum == parseInt((data.list.length)/10) 時隱藏點擊按鈕。
思路基本清晰了
二、實現功能
HTML:
<dl id="incomeNum"> <dt><em></em>每日分配收益</dt> </dl> <div class="jiaZai_more">點擊查看更多</div>
css:
此處省略css。
js:
function nwalletProfit(num, cNum){ $.ajax({ type: "post", async: true, url: url, dataType: "json", success: function (data) { if (data.list.length > 0){ var i = num; var ci= 0; var x = parseInt((data.profit_list.length)/10);//x為每10個一組的組數 if(cNum >= x){ $(".jiaZai_more").hide(); //當點擊更多的次數 ≥ 組數時,隱藏按鈕 } for(; i < data.profit_list.length; i++){ var htmltxt = ""; ci++; var date = data.profit_list[i].date; var year = date.substring(0, 4); var month = date.substring(4, 6); var day = date.substring(6); date = year+'年'+month+'月'+day+'日'; htmltxt += '<dd>'; htmltxt += '<h5 class="date">'+date+'</h5>'; htmltxt += '<p class="income">'+data.list[i].profit+'%</p>'; if(ci> 10){ break; } $("#incomeNum").append(htmltxt); } } }, error: function (e, d, c) { console.log(d) } }); } nwalletProfit(0); var clickNum = 0; //點擊的次數 $(".jiaZai_more").on('click', function(event) { event.preventDefault(); clickNum++; var iNum = 10*clickNum; //每次點擊開始加載的第一個索引值 nwalletProfit(iNum, clickNum); });
以上所述是小編給大家介紹的Ajax點擊不斷加載數據列表,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對網站的支持!