Cette fois, je vais vous montrer comment implémenter la pagination Ajax sans actualisation, et quelles sont les précautions pour implémenter la pagination Ajax sans actualisation. Voici des cas pratiques, jetons un coup d'œil.
Suite à l'article précédent - Code Java+Oracle pour implémenter la pagination (2) sur les principes et la mise en œuvre de la technologie de pagination, cet article continue d'analyser la technologie de pagination. L'article précédent parlait de l'implémentation du code de la technologie de pagination. Cet article continue d'analyser le contrôle des effets de la technologie de pagination.
Dans l'article précédent, nous avons simplement implémenté une pagination à l'aide de code. Mais nous avons tous vu que chaque fois que l'ensemble de résultats est obtenu via une requête de servlet dans le code, il sera redirigé vers une page jsp pour afficher les résultats, de sorte que la page sera actualisée à chaque fois que la requête apparaît. après avoir interrogé l'ensemble de résultats et consulté la troisième page, la page sera actualisée. L'effet de cette page sera un peu inconfortable, nous espérons donc que quelle que soit la page accessible après avoir interrogé l'ensemble de résultats via des conditions, la page ne sera pas actualisée, mais seul l'ensemble de résultats changera. Pour résoudre ce problème, je pense que tout le monde pensera facilement à l’Ajax.
Oui, nous devons demander à l’Ajax de sortir. Une fois l'ensemble de résultats interrogé via les conditions de requête, chaque visite ultérieure sur n'importe quelle page sera accessible via Ajax. Asynchrone est utilisé pour interagir avec le servlet, et les résultats sont interrogés et renvoyés à Ajax. change car Ajax renvoie les résultats et La page ne sera pas actualisée, ce qui implémente la technologie de pagination sans actualisation.
Regardons une implémentation simple de pagination sans actualisation. Le code est le suivant :
<!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 p.result:eq(' + page_index + ')') .clone(); $('#Searchresult').empty().append(new_content); return false; } function initPagination() { var num_entries = $('#hiddenresult p.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> <p id="Pagination" class="pagination"> </p> <br style="clear: both;" mce_style="clear: both;" /> <p id="Searchresult"> This content will be replaced when pagination inits. </p> <p id="hiddenresult" style="display: none;" mce_style="display: none;"> <p 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> </p> <p 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> </p> <p 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> </p> </p> </body> </html>
Il s'agit d'une implémentation de pagination sans actualisation très simple, utilisant le framework JQuery+ jquery.pagination. Maintenant, avec la popularité des frameworks, en particulier celle de Jquery, il est très efficace d'utiliser des frameworks pour le développement. Le principe du code ci-dessus a été commenté dans le code. Vous pouvez également vous référer au site officiel de Jquery :.
Nous pouvons maintenant développer notre implémentation de pagination sans actualisation Ajax. Sur la base du principe ci-dessus, dans pageselectCallback() dans le code qui répond au numéro de page pressé, nous utilisons un Ajax pour accéder de manière asynchrone à la base de données, extrayons le résultat défini via le numéro de page cliqué, puis le définissons sur la page. de manière asynchrone, afin qu'aucune actualisation ne puisse être effectuée.
La fonction de réponse pageselectCallback() lorsque le numéro de page est enfoncé est modifiée comme suit :
De cette façon, les résultats peuvent être obtenus de manière asynchrone et la fonction showResponse est utilisée pour traiter les résultats. La fonction showResponse est la suivante :
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); }
Le code ci-dessus est utilisé pour traiter les résultats au format XML renvoyés après une demande asynchrone du Servlet via Ajax. Le code du Servlet se trouve dans l'article précédent. Parmi eux, itemList et pageList sont respectivement la liste d'utilisateurs et la navigation par pagination générées après l'analyse et le retour, afin que les utilisateurs puissent afficher les données à leur manière.
function pageselectCallback(page_index, jq){ var pars="pageNo="+(page_index+1); $.ajax({ type: "POST", url: " UserBasicSearchServlet", cache: false, data: pars, success: showResponse }); return false; }
Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !
Lecture recommandée :
Comment utiliser le contrôle Rating dans AjaxToolKit
Comment implémenter la traversée jQuery+ajax de json données
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!