web-dev-qa-db-fra.com

window.location.reload ne fonctionne pas pour Firefox et Chrome

Je veux changer le statut de l'utilisateur en cliquant sur un bouton. Tout ce que je fais est donc de détecter le statut actuel et de le modifier, si nécessaire.

Mais dans ce cas, le statut est modifié dans le backend, mais pour afficher le statut, la page doit être actualisée, car lors du rafraîchissement, elle vérifie le statut actuel et affiche. J'utilise donc la propriété "window.location.reload" pour afficher le dernier statut sur la page

Toutes les choses fonctionnent bien dans IE. Mais dans le cas de Firefox et de Chrome, le statut ne change pas. Je pense que "window.location.reload" ne fonctionne pas, car lorsque je commente simplement cette ligne, j'essaie de cliquer sur le bouton et d'actualiser manuellement la page pour afficher l'état des modifications.

Pouvez-vous s'il vous plaît suggérer ce que je devrais utiliser pour que cela fonctionne dans Firefox et Chrome?

Quand j'ai googlé, j'ai trouvé quelque part que cela fonctionne dans Firefox et Chrome si vous le donnez dans "setTimeout ()". Je l'ai essayé, mais même alors, ça ne marche pas pour moi.

<script>

    $(document.body).on('click', '#activate', function () {
        var pkgVersion = $(this).attr('data-version');
        alert("@Url.Action("SetActivePackage", "Deployment")", { version: pkgVersion });
        $.get("@Url.Action("SetActivePackage", "Deployment")", { version: pkgVersion }).done(function () {

        });
         setTimeout(function () { window.location.reload(data); }, 0);
    });
</script>

Veuillez suggérer!

16
UID

J'ai deux autres options pour vous:

history.go(0);

Et:

window.location.href = window.location.href;

Je ne l'ai pas encore testé sur Firefox et Chrome, mais cela pourrait vous aider plus rapidement. Demain, je vais faire les tests et mettre à jour la réponse si cela ne fonctionne pas.

27
Wellington Zanelli

J'ai eu ce problème dans AngularJS et Firefox. (Le rechargement s'est bien déroulé sous Chrome) . En utilisant le problème setTimeout résolu.

setTimeout(function(){
  window.location.reload();
});
26
Morteza Ziaeemehr

Avez-vous essayé cela ?:

window.location = window.location;

Apparemment, vous pouvez laisser tomber la "fenêtre.".

10
Shylo Hana

J'ai eu le même problème dans Chrome et Firefox. J'ai pu résoudre le problème en demandant au serveur de répondre avec l'URL de la page. Dans votre cas, vous pourriez avoir la réponse comme nouvelle valeur pour le statut de l'utilisateur. Voici deux exemples: 

$.post('?action=' + myAction, function (data) {
        window.location.href = data;
    });

..et la réponse du serveur

Response.Write("/yourUrl);
Response.End();

Cela a éliminé l'incohérence dans Chrome et la page s'est rechargée sans faute. 

2
Michael

Ici, cela fonctionne pour moi avec Fire Fox ainsi que Chrome et fonctionne bien avec IE.

object.reload(forcedReload);
1
Dhruv Gurjar

Regardez ceci Vous pouvez forcer le rechargement pour obtenir la page du serveur en définissant le paramètre forceGet sur true: 

location.reload(true);
1
Volodymyr Yasinskyi

La note clé de mon point de vue est que l'emplacement de la fonction pour moi devait être au-dessus de l'emplacement d'où l'appel provenait. En pensant que ce navigateur interprète le javascript de haut en bas, si mon code de rechargement était en dessous de l'objet qui l'invoque, il échoue. Si je mets le code ci-dessus, window.location.href = window.location.href; travaillé. 

0
Matt Meents