Comment puis-je supprimer la chaîne de requête de l'url après le chargement de la page?
J'ai une URL avec une longue chaîne de requête attaché à elle.
Après le chargement de la page, je n'ai pas besoin de la chaîne de requête. Je tiens donc à supprimer la chaîne de requête à partir de la barre d'adresse sans rechargement de la page.
J'ai essayé parent.location.hash = '';
et window.location.href = '/#'
Ils n'ont pas à faire la différence.
- de hachage est celle qui vient après la
#
. chaîne de requête est l'un après l'?
mais avant de le#
. ce que vous faites n'a pas de sens. pourquoi voudriez-vous cacher? - lire stackoverflow.com/questions/136458/...
- veuillez tester mon code si ça marche ou pas 🙂
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas faire cela sans avoir à recharger la page, imaginez si vous pouviez mettre tout ce que tu voulais dans la barre d'adresse du navigateur? La sécurité du plaisir 🙂
Bien que vous pouvez maintenant le faire en HTML5 (qui ne fonctionne que sur les navigateurs le supportant) à l'aide de la nouvelle l'histoire de l'API, mais en réalité, votre scénario de la meilleure des garanties d'une réécriture au lieu de qui (semble masse pour casser une noix).
Comme vous l'avez dit vous n'avez pas besoin de la chaîne de requête après le chargement de la page, vous devriez vraiment post de retour, alors redirigé vers une autre URL après que vous avez terminé votre traitement.
Comme d'autres l'ont dit, vous pouvez le faire à l'aide de la L'histoire de l'API dans les navigateurs modernes (IE10+, FF4+, Chrome5+). Il n'y a aucun exemple dans les réponses, donc pensé que je vous ferais partager ma solution, j'ai juste eu à faire la même chose:
Si vous utilisez Modernizr, vous pouvez également vérifier si l'Histoire de l'API est disponible comme suit:
Qui est réalisable dans les navigateurs modernes à l'aide de l'histoire de l'api, mais n'est probablement pas la meilleure solution à votre problème.
On dirait que tu serais mieux de traitement de données, puis de les rediriger vers la page d'accueil au lieu de retourner un document HTML directement.
Puisque vous n'êtes pas désireux de garder l'URL, il ne sera pas utile pour le partage de signets, de sorte qu'il est fort probable que vous serait mieux de faire une requête POST.
Ceci suggère que vous devriez être à l'aide de la POST-Rediriger-GET modèle.
Utilisation
history.replaceState({}, "Title", "page.html");
même syntaxe pour
pushState
. Cependant, vous aurez à trouver un moyen de rendre IE comprendre.Une meilleure approche serait d'utiliser Apache
mod_rewrite
module. Il est très facile à utiliser.Supprimer la valeur de chaîne de requête à partir de la barre d'adresse de
J'utilise ce code snippit dans mes projets personnels où j'ai besoin de supprimer l'URL params sans re-chargement:
Mis à jour le Code Maintenant, il va travailler
Juste Ajouter le code ci-Dessous dans votre page dont le lien que vous souhaitez modifier.
N'oubliez pas d'ajouter http://code.jquery.com/jquery-latest.js
sur votre page
Que j'ai rencontré le même problème. Ma solution a été de ces:
Obtenez la requête comme ceci:
Après la fin de l'opération de redirection comme ceci:
Dans la réponse, si il n'y a aucun message, j'ai l'impression comme ça:
J'espère que ça aidera d'autres personnes 🙂
Je veux ajouter un moyen de plus pour ce faire, en particulier pour ceux qui sont à l'aide de
$routeProvider
.Comme il a été mentionné dans d'autres réponses, vous faites cela en utilisant:
ou par la création d'un nouveau record dans l'histoire de la pile:
Pour une très détaillé et agréable explication à propos de faire avec
history.pushState
ethistory.replaceState
, vous pouvez lire ce post sur DONC .TOUTEFOIS, si vous utilisez Angulaire
$routeProvider
dans votre application, alors il sera encore la capture de ce changement si cela correspond à aucun modèle existant. Pour éviter cela, assurez-vous que votre$routeProvider
a reloadOnSearch indicateur a la valeurfalse
car par défaut il esttrue
.Par exemple:
Vous pourriez éviter de chaîne de requête tout en utilisant
POST
au lieu deGET
.