主頁 > 知識庫 > 分頁技術(shù)原理與實現(xiàn)之無刷新的Ajax分頁技術(shù)(三)

分頁技術(shù)原理與實現(xiàn)之無刷新的Ajax分頁技術(shù)(三)

熱門標(biāo)簽:個人怎樣在百度地圖標(biāo)注地名 硅語電話機(jī)器人公司 騰訊地圖標(biāo)注位置能用多久 云呼外撥網(wǎng)絡(luò)電話系統(tǒng) ai機(jī)器人電銷資源 機(jī)器人電銷騙局揭秘 超級大富翁地圖標(biāo)注 越南河內(nèi)地圖標(biāo)注 地圖標(biāo)注項目怎么樣

緊接著上篇—分頁技術(shù)原理與實現(xiàn)之Java+Oracle代碼實現(xiàn)分頁(二) ,本篇繼續(xù)分析分頁技術(shù)。上篇講的是分頁技術(shù)的代碼實現(xiàn),這篇繼續(xù)分析一下分頁技術(shù)的效果控制。
上篇已經(jīng)用代碼簡單的實現(xiàn)了一個分頁。但是我們都看到,代碼中每次通過servlet請求取得結(jié)果集后,都會轉(zhuǎn)向到一個jsp頁面顯示結(jié)果,這樣每次查詢頁面都會刷新一下,比如查詢出現(xiàn)結(jié)果集后要查看第三頁,頁面就會刷新一下。這樣頁面給人的效果感覺就會有點不舒服,所以我們希望能夠在通過條件查詢結(jié)果集后無論訪問哪一頁,頁面都不會刷新,而只是結(jié)果集變化。要解決這個,我想大家很容易就會想到Ajax了。
是啊,這就要請Ajax出山了。當(dāng)通過查詢條件查詢到結(jié)果集后,以后每次訪問任何一頁都通過Ajax來訪問,使用異步Ajax與Servlet進(jìn)行交互,將結(jié)果查詢出來返回給Ajax,這樣頁面內(nèi)容因為Ajax返回結(jié)果而改變,而頁面卻不會刷新,這就實現(xiàn)了無刷新的分頁技術(shù)。
下面我們來看一個簡單的無刷新分頁實現(xiàn),代碼如下:

!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
 head>
 meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
 link rel="stylesheet" href="../lib/jquery_pagination/pagination.css" mce_href="lib/jquery_pagination/pagination.css" />
 mce:script type="text/a  class='replace_word' title="JavaScript知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>JavaScript/a>" src="../lib/a  class='replace_word' title="jQuery知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>jQuery/a>/jquery.min.js" mce_src="lib/jquery/jquery.min.js">/mce:script>
 mce:script type="text/javascript"
  src="../lib/jquery_pagination/jquery.pagination.js">/mce:script>
 mce:script type="text/javascript">!--
 /**
 * Callback function that displays the content.
 *
 * Gets called every time the user clicks on a pagination link.
 *
 * @param {int}page_index New Page index
 * @param {jQuery} jq the a  class='replace_word' title="Docker知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>Container/a> with the pagination links as a jQuery object
 */
 function pageselectCallback(page_index, jq) {
 var new_content = $('#hiddenresult div.result:eq(' + page_index + ')')
  .clone();
 $('#Searchresult').empty().append(new_content);
 return false;
 }

 function initPagination() {
 var num_entries = $('#hiddenresult div.result').length;
 // Create pagination element
 $("#Pagination").pagination(num_entries, {
  num_edge_entries : 2,
  num_display_entries : 8,
  callback : pageselectCallback,
  items_per_page : 1
 });
 }

 // When the HTML has loaded, call initPagination to paginate the elements    
 $(document).ready(function() {
 initPagination();
 });
// -->/mce:script>
 mce:style type="text/css">!--
* {
 padding: 0;
 margin: 0;
}

body {
 background-color: #fff;
 margin: 20px;
 padding: 0;
 height: 100%;
 font-family: Arial, Helvetica, sans-serif;
}

#Searchresult {
 margin-top: 15px;
 margin-bottom: 15px;
 border: solid 1px #eef;
 padding: 5px;
 background: #eef;
 width: 40%;
}

#Searchresult p {
 margin-bottom: 1.4em;
}
-->/mce:style>style type="text/css" mce_bogus="1">* {
 padding: 0;
 margin: 0;
}

body {
 background-color: #fff;
 margin: 20px;
 padding: 0;
 height: 100%;
 font-family: Arial, Helvetica, sans-serif;
}

#Searchresult {
 margin-top: 15px;
 margin-bottom: 15px;
 border: solid 1px #eef;
 padding: 5px;
 background: #eef;
 width: 40%;
}

#Searchresult p {
 margin-bottom: 1.4em;
}/style>
 title>Pagination/title>
 /head>
 body>
 h4>
  jQuery Pagination Plugin Demo
 /h4>

 div id="Pagination" class="pagination">
 /div>
 br style="clear: both;" mce_style="clear: both;" />
 div id="Searchresult">
  This content will be replaced when pagination inits.
 /div>

 div id="hiddenresult" style="display: none;" mce_style="display: none;">
  div class="result">
  p>
   Globally maximize granular "outside the box" thinking vis-a-vis
   quality niches. Proactively formulate 24/7 results whereas 2.0
   catalysts for change. Professionally implement 24/365 niches rather
   than client-focused users.
  /p>
  p>
   Competently engineer high-payoff "outside the box" thinking through
   cross functional benefits. Proactively transition intermandated
   processes through open-source niches. Progressively engage
   maintainable innovation and extensible interfaces.
  /p>
  /div>
  div class="result">
  p>
   Credibly fabricate e-business models for end-to-end niches.
   Compellingly disseminate integrated e-markets without ubiquitous
   services. Credibly create equity invested channels with
   multidisciplinary human capital.
  /p>
  p>
   Interactively integrate competitive users rather than fully tested
   infomediaries. Seamlessly initiate premium functionalities rather
   than impactful architectures. Rapidiously leverage existing
   resource-leveling processes via user-centric portals.
  /p>
  /div>
  div class="result">
  p>
   Monotonectally initiate unique e-services vis-a-vis client-centric
   deliverables. Quickly impact parallel opportunities with B2B
   bandwidth. Synergistically streamline client-focused
   infrastructures rather than B2C e-commerce.
  /p>
  p>
   Phosfluorescently fabricate 24/365 e-business through 24/365 total
   linkage. Completely facilitate high-quality systems without
   stand-alone strategic theme areas.
  /p>
  /div>
 /div>
 /body>
/html>

這就是一個非常簡單的無刷新分頁實現(xiàn),使用了JQuery+ jquery.pagination框架?,F(xiàn)在隨著框架的流行,尤其是Jquery的流行,使用框架來開發(fā)是非常有效的。上面代碼原理在代碼中已有注釋,也可參考Jquery的官方網(wǎng)站:。
現(xiàn)在就可以來開發(fā)我們的Ajax無刷新分頁實現(xiàn)?;谏厦娴脑恚陧憫?yīng)頁碼被按下的代碼中pageselectCallback(),我們使用一個Ajax異步訪問數(shù)據(jù)庫,通過點擊的頁號將結(jié)果集取出后再用異步設(shè)置到頁面,這樣就可以完成了無刷新實現(xiàn)。 

頁碼被按下的響應(yīng)函數(shù)pageselectCallback()修改如下: 

這樣就可以用異步方式獲取結(jié)果,用showResponse函數(shù)來處理結(jié)果了,showResponse函數(shù)如下:

function showResponse(request){
   var content = request;
   var root = content.documentElement;
   var responseNodes = root.getElementsByTagName("root");
   var itemList = new Array();
   var pageList=new Array();
   alert(responseNodes.length);
   if (responseNodes.length > 0) {
    var responseNode = responseNodes[0];
    var itemNodes = responseNode.getElementsByTagName("data");
    for (var i=0; iitemNodes.length; i++) {
     var idNodes = itemNodes[i].getElementsByTagName("id");
     var nameNodes = itemNodes[i].getElementsByTagName("name");
     var sexNodes=itemNodes[i].getElementsByTagName("sex");
     var ageNodes=itemNodes[i].getElementsByTagName("age");
     if (idNodes.length > 0  nameNodes.length > 0sexNodes.length > 0 ageNodes.length > 0) {
      var id=idNodes[0].firstChild.nodeValue;
      var name = nameNodes[0].firstChild.nodeValue;
      var sex = sexNodes[0].firstChild.nodeValue;
      var age=ageNodes[0].firstChild.nodeValue;
      itemList.push(new Array(id,name, sex,age));
     }
    }
    
    var pageNodes = responseNode.getElementsByTagName("pagination");
    if (pageNodes.length>0) {
     var totalNodes = pageNodes[0].getElementsByTagName("total");
     var startNodes = pageNodes[0].getElementsByTagName("start");
     var endNodes=pageNodes[0].getElementsByTagName("end");
     var currentNodes=pageNodes[0].getElementsByTagName("pageno");
     if (totalNodes.length > 0  startNodes.length > 0endNodes.length > 0) {
      var total=totalNodes[0].firstChild.nodeValue;
      var start = startNodes[0].firstChild.nodeValue;
      var end = endNodes[0].firstChild.nodeValue;
      var current=currentNodes[0].firstChild.nodeValue;
      pageList.push(new Array(total,start,end,current));
     }
    }
   }
   showTable(itemList,pageList);
  }

如上代碼就是用來處理通過Ajax異步請求Servlet后返回的XML格式的結(jié)果,其中Servlet代碼在上篇中。其中itemList、pageList分別是解析返回后生成的用戶List和分頁導(dǎo)航,這樣用戶就可以以自己的展現(xiàn)方式展現(xiàn)數(shù)據(jù)了。

function pageselectCallback(page_index, jq){
  var pars="pageNo="+(page_index+1);
   $.ajax({
    type: "POST",
   url: " UserBasicSearchServlet",
   cache: false,
   data: pars,
   success: showResponse
  });
    return false;
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 使用ajax技術(shù)無刷新動態(tài)調(diào)用新浪股票實時數(shù)據(jù)
  • ThinkPHP結(jié)合AjaxFileUploader實現(xiàn)無刷新文件上傳的方法
  • Jquery基于Ajax方法自定義無刷新提交表單Form實例
  • 使用ajax實現(xiàn)無刷新改變頁面內(nèi)容和地址欄URL
  • php+ajax實現(xiàn)無刷新動態(tài)加載數(shù)據(jù)技術(shù)
  • jQuery+AJAX實現(xiàn)無刷新下拉加載更多
  • jQuery實現(xiàn)AJAX定時刷新局部頁面實例
  • jQuery使用$.ajax進(jìn)行異步刷新的方法(附demo下載)
  • jQuery實現(xiàn)form表單基于ajax無刷新提交方法詳解
  • jQuery+Ajax實現(xiàn)無刷新操作
  • Ajax回退刷新頁面問題的解決辦法

標(biāo)簽:舟山 鄭州 海南 洛陽 內(nèi)蒙古 林芝 遼源 邢臺

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《分頁技術(shù)原理與實現(xiàn)之無刷新的Ajax分頁技術(shù)(三)》,本文關(guān)鍵詞  分頁,技術(shù),原理,與,實現(xiàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《分頁技術(shù)原理與實現(xiàn)之無刷新的Ajax分頁技術(shù)(三)》相關(guān)的同類信息!
  • 本頁收集關(guān)于分頁技術(shù)原理與實現(xiàn)之無刷新的Ajax分頁技術(shù)(三)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章