關(guān)于Ajax異步請求后臺數(shù)據(jù)進(jìn)行動態(tài)分頁功能
ajax請求后臺拿到j(luò)son類型的數(shù)據(jù)后,可以在它的success回調(diào)方法中進(jìn)行動態(tài)分頁,也就是表格重繪,此時(shí),我們需要得到的數(shù)據(jù)包括:查詢得到的數(shù)據(jù)、數(shù)據(jù)總條數(shù)、總頁數(shù)、當(dāng)前頁數(shù),其中前三條可在后臺獲取,對于當(dāng)前頁數(shù),需要從前端獲取點(diǎn)擊頁數(shù)再通過請求傳遞給后臺,后臺做完相應(yīng)處理后再傳回給前端。
請看如下例子:
/** * * @param page 當(dāng)前頁 */ function getData(page){ var schoolid = $("#schoolid option:selected").text(); var apptype = $("#apptype option:selected").text(); var appname = $("#appname").val(); $.ajax({ type : "POST", url : "pageAjax", dataType : "json", data : {'schoolid':schoolid,'apptype':apptype,'page':page,'appname':appname}, success : function(data){ console.log("成功了!"+data); $("#table").html(""); $(".turn_page").html(""); var str = "<tr><th class='w20'>應(yīng)用編號</th>" +"<th class='w15'>學(xué)校名稱</th>" +"<th class='w30'>應(yīng)用名稱</th>" +"<th class='w25'>應(yīng)用分類</th>" +"<th class='w10'>應(yīng)用類型</th></tr>"; for(var i=0;i<data.resultList.length;i++){ str += "<tr onclick='showAppDetail(this);'><td>"+data.resultList[i].appid+"</td><td>" +data.resultList[i].schoolid+"</td><td>"+data.resultList[i].appname+"</td><td>" +data.resultList[i].app_departid+"</td><td>"+data.resultList[i].apptype+"</td></tr>"; } $("#table").html(str); //重繪table var pageNum = data.pageNum; //獲取得到的數(shù)據(jù)頁數(shù) var curPage = data.curPage; //獲取當(dāng)前頁 str = ""; /*若頁數(shù)大于1則添加上一頁、下一頁鏈接*/ if(data.pageNum>1){ str = "<ul><li><a href='javascript:void(0);onclick=preEvent();' id='pre' data-num='1'>上一頁</a></li>" }else{ str = "<ul>"; } /*循環(huán)輸出每一頁的鏈接*/ for(var i=0;i<data.pageNum;i++){ str += "<li><a href='javascript:void(0);onclick=getData("+(parseInt(i)+1)+");' data-type='num'>"+(parseInt(i)+1)+"</a></li>"; } if(str.indexOf("上一頁")>-1){ str += "<li><a href='javascript:void(0);onclick=nextEvent();' id='next' data-num='1'>下一頁</a></li>" +"<span>共<span id='pageNum'>"+pageNum+"</span>頁</span></ul>"; }else{ str += "<span>共<span id='pageNum'>"+pageNum+"</span>頁</span></ul>"; } $(".turn_page").html(str); //把當(dāng)前頁碼存到上一頁、下一頁的data-num屬性中,這樣可以在點(diǎn)擊上一頁或者下一頁時(shí)知道應(yīng)該跳到哪頁 $("#pre").attr("data-num",curPage); $("#next").attr("data-num",curPage); }, error : function(data){ alert("請求失敗"); } }); } /** * 上一頁點(diǎn)擊事件 */ function preEvent(){ var curPage = $("#pre").attr("data-num"); if(curPage<=1){ $(this).attr('disabled',"true"); }else{ curPage = parseInt(curPage)-1; getData(curPage); } } /** * 下一頁點(diǎn)擊事件 */ function nextEvent(){ var curPage = $("#next").attr("data-num"); var pageNum = $("#pageNum").text(); if(curPage>=pageNum){ $(this).attr('disabled',"true"); }else{ curPage = parseInt(curPage)+1; getData(curPage); } }
對應(yīng)的HTML代碼
<div class="table"> <table id="table"> </table> </div> <div class="turn_page"> </div>
注意:標(biāo)簽的href屬性,如href=”javascript:void(0);onclick=getData();”
要讓原來的點(diǎn)擊事件失去響應(yīng),重新給它定義點(diǎn)擊事件,要給它加上javascript:void(0);
這句話,若寫的是href=”#”
的話,點(diǎn)擊默認(rèn)會跳到頁面頂部。
另外,ajax請求數(shù)據(jù)無刷新翻頁是異步請求,所以標(biāo)簽的點(diǎn)擊事件要寫在它的屬性里,如上例,若寫在js當(dāng)中,會造成頁面還沒加載出來,事件就已經(jīng)觸發(fā),導(dǎo)致沒有任何響應(yīng)。
總結(jié)
以上所述是小編給大家介紹的關(guān)于Ajax異步請求后臺數(shù)據(jù)進(jìn)行動態(tài)分頁功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
Ajax學(xué)習(xí)全套(最全最經(jīng)典)
ajax是指一種創(chuàng)建交互式網(wǎng)頁應(yīng)用的網(wǎng)頁開發(fā)技術(shù)。這篇文章主要介紹了Ajax學(xué)習(xí)全套(最全最經(jīng)典)的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-08-08通過Ajax請求動態(tài)填充頁面數(shù)據(jù)的實(shí)例
今天小編就為大家分享一篇通過Ajax請求動態(tài)填充頁面數(shù)據(jù)的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08AJAX和三層架構(gòu)實(shí)現(xiàn)分頁功能具體思路及代碼
本文涉及到AJAX和三層架構(gòu)方面的知識,在學(xué)習(xí)分頁的同時(shí)也鞏固了一下它們的相關(guān)知識,適合初學(xué)者的你2013-05-05妙用Ajax技術(shù)實(shí)現(xiàn)局部刷新商品數(shù)量和總價(jià)實(shí)例代碼
這篇文章主要給大家介紹妙用Ajax技術(shù)實(shí)現(xiàn)局部刷新商品數(shù)量和總價(jià)實(shí)例代碼,非常不錯(cuò),需要的朋友一起看看吧2016-05-05ajax提交到j(luò)ava后臺之后處理數(shù)據(jù)的實(shí)現(xiàn)
下面小編就為大家?guī)硪黄猘jax提交到j(luò)ava后臺之后處理數(shù)據(jù)的實(shí)現(xiàn)。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05