您好,登錄后才能下訂單哦!
這篇文章主要介紹web開發中如何實現無刷新的Ajax分頁技術,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
代碼如下:
<!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 href="http://lib.csdn.net/base/javascript" class='replace_word' title="JavaScript知識庫" target='_blank' style='color:#df3434; font-weight:bold;'>JavaScript</a>" src="../lib/<a href="http://lib.csdn.net/base/jquery" 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 href="http://lib.csdn.net/base/docker" 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> <h5> jQuery Pagination Plugin Demo </h5> <div id="Pagination" class="pagination"> </div> <br mce_ /> <div id="Searchresult"> This content will be replaced when pagination inits. </div> <div id="hiddenresult" mce_> <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>
這就是一個非常簡單的無刷新分頁實現,使用了JQuery+ jquery.pagination框架。現在隨著框架的流行,尤其是Jquery的流行,使用框架來開發是非常有效的。上面代碼原理在代碼中已有注釋,也可參考Jquery的官方網站:。
現在就可以來開發我們的Ajax無刷新分頁實現。基于上面的原理,在響應頁碼被按下的代碼中pageselectCallback(),我們使用一個Ajax異步訪問數據庫,通過點擊的頁號將結果集取出后再用異步設置到頁面,這樣就可以完成了無刷新實現。
頁碼被按下的響應函數pageselectCallback()修改如下:
這樣就可以用異步方式獲取結果,用showResponse函數來處理結果了,showResponse函數如下:
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; i<itemNodes.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 > 0&&sexNodes.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 > 0&&endNodes.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格式的結果,其中Servlet代碼在上篇中。其中itemList、pageList分別是解析返回后生成的用戶List和分頁導航,這樣用戶就可以以自己的展現方式展現數據了。
function pageselectCallback(page_index, jq){ var pars="pageNo="+(page_index+1); $.ajax({ type: "POST", url: " UserBasicSearchServlet", cache: false, data: pars, success: showResponse }); return false; }
以上是“web開發中如何實現無刷新的Ajax分頁技術”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。