Maison >interface Web >js tutoriel >Exemple d'utilisation d'ajax et history.pushState pour modifier l'URL de la page sans rapport avecfresh_AJAX
Cet article présente principalement l'exemple d'utilisation d'ajax et history.pushState pour modifier l'URL de la page sans actualiser. Les amis qui en ont besoin peuvent se référer à
Performance
. Si vous utilisez Lorsque des navigateurs tels que Chrome ou Firefox visitent ce blog, github.com, plus.google.com et d'autres sites Web, si vous faites attention, vous constaterez que les clics entre les pages sont demandés de manière asynchrone via ajax, et en même temps , l'URL de la page a changé. Et il peut très bien prendre en charge le navigateur en avant et en arrière.
Qu'est-ce qui a une fonction si puissante ?
HTML5 fait référence à de nouvelles API, history.pushState et history.replaceState, qui sont utilisées pour modifier l'URL de la page sans actualiser.
Différences par rapport à l'AJAX traditionnel
L'ajax traditionnel présente les problèmes suivants :
1. Le contenu de la page peut être modifié sans actualisation, mais l'URL de la page ne peut pas être modifiée.
2. Pour une meilleure accessibilité, après la modification du contenu, le hachage de l'URL est généralement modifié
3 La méthode de hachage ne peut pas bien gérer les problèmes de transfert en avant et en arrière du navigateur !
4. Le navigateur a introduit l'interface onhashchange. Les navigateurs qui ne la prennent pas en charge ne peuvent déterminer que périodiquement si le hachage a changé
Mais cette méthode est très peu conviviale pour les moteurs de recherche
6. Twitter et Google ont convenu d'utiliser #!xxx (c'est-à-dire que le premier caractère du hachage est !), et les moteurs de recherche le prennent en charge. Afin de résoudre les problèmes causés par l'ajax traditionnel, de nouvelles API ont été introduites dans HTML5, à savoir : history.pushState, history.replaceStateVous pouvez exploiter l'historique du navigateur via pushState et interfaces replaceState et modifiez l'URL de la page actuelle. pushState consiste à ajouter l'URL spécifiée à l'historique du navigateur, et replaceState consiste à remplacer l'URL actuelle par l'URL spécifiée.Comment utiliser
<strong style="border-color: initial; border-width: 0px; padding: 0px; margin: 0px;">var state = { title: title, url: options.url, otherkey: othervalue }; window.history.pushState(state, document.title, url);</strong>En plus du titre et de l'URL, vous pouvez également ajouter d'autres données à l'objet d'état, telles que : vous souhaitez également envoyer un peu d'ajax Enregistrez la configuration. replaceState et pushState sont similaires, je ne les présenterai donc pas ici.
Comment répondre aux opérations avant et arrière du navigateur
window.addEventListener('popstate', function(e){ if (history.state){ var state = e.state; //do something(state.url, state.title); } }, false);De cette façon, vous pouvez combiner ajax et pushState pour une navigation parfaite sans actualisation.
Quelques restrictions
Quelques traitements correspondant au backend
function is_pjax(){ return array_key_exists('HTTP_X_PJAX', $_SERVER) && $_SERVER['HTTP_X_PJAX'] === 'true'; }Bien que l'interface n'ait que pushState, replaceState et onpopstate, de nombreux traitements doivent être effectués lors de son utilisation. Un plug-in basé sur jquery a été écrit pour cela. L'article suivant présentera en détail comment utiliser pjax (ajax+pushState) pour modifier la navigation dans les URL sans actualiser. J'ai compilé ce qui précède pour vous, j'espère que cela vous sera utile à l'avenir. Articles connexes :
Résumé en 3 points des principes techniques Ajax_Connexes à AJAX
Guide d'utilisation de la classe d'encapsulation AJAX
Tutoriel élémentaire AJAX : Apprendre à connaître AJAX pour la première fois
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!