Cet article présente principalement pushState, replaceState et onpopstate pour réaliser l'actualisation avant et arrière des pages Ajax. Il est très bon et a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
Vous pouvez l'utiliser. Ajax L'obtention de données de manière asynchrone peut rendre la page plus efficacement.
Mais il y a aussi quelques problèmes :
Actualisez à nouveau la page, et la page reviendra à son état initial
Parcourir Les fonctions avant et arrière du navigateur ne sont pas valides
Pas convivial pour les robots des moteurs de recherche
1
Auparavant, le point d'ancrage de hachage du navigateur était utilisé pour résoudre le problème<.>
Différents hachages marquent différentes parties de la page, ce qui peut corriger le problème des données d'actualisation de page incorrectes Surveillez ensuite le changement du point d'ancrage du hachage via l'événement onhashchange et effectuez manuellement des opérations avant et arrière , prise en charge du navigateur 2. Puis une technologie hashbang est apparue, qui consiste à ajouter la balise #!/myPath après l'url pour résoudre le problème ci-dessus. Définissez une partie de page via un chemin, ce qui est couramment vu dans les applications monopage (déjà encapsulées dans Angular). Mais il semble que seul Google prend vraiment en charge l'exploration de ce chemin 3, Les nouvelles fonctionnalités de HTML5 ont aidé, grâce aux deux nouvelles méthodes d'historique pushState et replaceState et à l'événement de fenêtre onpopstate, à résoudre le problème au-dessus de trois problèmesBien sûr, comme il s'agit d'une nouvelle fonctionnalité de HTML5, elle n'est pas bien prise en charge par les anciens navigateurs. Il est recommandé d'utiliser la méthode hashbang pour la rendre compatibleCet article. parle principalement de pushState, ces nouveautésLe texte est trop ennuyeux, jetons un œil à l'icône pour le ressentir directement Le but de ceci Chestnut est : La valeur initiale est 0. Elle s'incrémente grâce à des requêtes asynchrones. Vous pouvez avancer ou reculer et actualiser. Vous pouvez également obtenir les données correspondantes après avoir ouvert une nouvelle URLhistory.pushState(state, title, url) history.replaceState(state, title, url)
<p class="push-state-test"> <input type="button" id="ajax-test-btn" value="Ajax获取"> <p>value: <span id="ajax-test-val">0</span></p> </p>
var $val = $('#ajax-test-val'), // 获取当前页面的标记 m = window.location.search.match(/\?val=(\d+)/); // 新进入页面,通过url中的标记初始化数据 if (m) { increaseVal(m[1] - 1); } // 请求 function increaseVal(val) { $.post('ajax-test.php', { val: val }, function(newVal) { $val.text(newVal); // 存储相关值至对象中 var state = { val: newVal, title: 'title-' + newVal, url: '?val=' + newVal } // 将相关值压入history栈中 window.history.pushState && window.history.pushState(state, state.title, state.url); }); } $('#ajax-test-btn').click(function() { increaseVal(parseInt($val.text(), 10)); }); // 浏览器的前进后退,触发popstate事件 window.onpopstate = function() { var state = window.history.state; console.log(state) // 直接将值取出,或再次发个ajax请求 $val.text(state.val); window.history.replaceState && window.history.replaceState(state, state.title, state.url); };
<?php $val = $_REQUEST['val']; echo $val + 1; ?>
Implémentation de la file d'attente de requêtes AJAX
Un résumé de plusieurs méthodes de soumission de formulaires de manière asynchrone à l'aide d'Ajax
Comment résoudre le problème des tableaux dans les requêtes AJAX
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!