Ce code fonctionne pour moi. Je l'ai utilisé dans mon application en ajax.
history.pushState({ foo: 'bar' }, '', '/bank');
Une fois qu'une page est chargée dans un ID à l'aide d'ajax, elle change l'url du navigateur automatiquement sans recharger la page.
C'est la fonction ajax ci-dessous.
function showData(){
$.ajax({
type: "POST",
url: "Bank.php",
data: {},
success: function(html){
$("#viewpage").html(html).show();
$("#viewpage").css("margin-left","0px");
}
});
}
Exemple : A partir de n'importe quelle page ou contrôleur comme "Dashboard", quand je clique sur la banque, il charge la liste des banques en utilisant le code ajax sans recharger la page. A ce moment, l'URL du navigateur ne sera pas modifié.
history.pushState({ foo: 'bar' }, '', '/bank');
Mais quand j'utilise ce code dans l'ajax, il change l'url du navigateur sans recharger la page. C'est le code complet de l'ajax ici dans le bellow.
function showData(){
$.ajax({
type: "POST",
url: "Bank.php",
data: {},
success: function(html){
$("#viewpage").html(html).show();
$("#viewpage").css("margin-left","0px");
history.pushState({ foo: 'bar' }, '', '/bank');
}
});
}
186 votes
Pour faciliter la compréhension de la question, voici ce que fait Facebook lorsque vous ouvrez une photo, par exemple. La barre d'adresse change pour pointer DIRECTEMENT vers cette photo, de sorte que vous pouvez partager l'URL sans perdre l'endroit où vous vous trouvez dans le site. Vous vous souvenez des sites basés sur le cadrage de la dernière décennie ? Vous ne pouviez obtenir que l'URL de la page d'accueil, car seuls les cadres internes changeaient. Et c'était terrible.
7 votes
Alors que
history.pushState()
est probablement la bonne réponse ici, dans cette situation (en fonction des circonstances exactes...), la possibilité d'utiliser une redirection côté serveur (comme via l'utilisation de la directive RewriteRule d'Apache) est quelque chose que vous pourriez envisager, ou du moins connaître. J'ai simplement pensé qu'il fallait le mentionner !13 votes
window.history.replaceState(null, document.title, "/page2.php")
est probablement ce que la plupart des gens recherchent.