it-swarm-es.com

window.location.reload no funciona para Firefox y Chrome

Quiero cambiar el estado del usuario al hacer clic en un botón, por lo que todo lo que estoy haciendo es detectar el estado actual y cambiarlo, si es necesario.

Pero en este caso, el estado cambia en el backend, pero para mostrar el estado, la página debe actualizarse, ya que al actualizar comprueba el estado actual y se muestra. Así que estoy usando la propiedad "window.location.reload" para mostrar el estado más reciente en la página

Todas las cosas están funcionando bien en IE. Pero en el caso de Firefox y Chrome, el estado no está cambiando. Creo que "window.location.reload" no funciona, porque cuando solo comento esta línea e intento hacer clic en el botón y actualizar manualmente la página, muestra el estado de los cambios.

¿Puede sugerirme, por favor, qué debo usar para hacer que esto funcione en Firefox y Chrome?

Cuando busqué en Google, encontré que en algún lugar funciona en Firefox y Chrome si lo das en "setTimeout ()". Lo intenté, pero incluso entonces no me funciona.

<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>

¡Por favor recomiende!

16
UID

Tengo otras dos opciones para ti:

history.go(0);

Y:

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

No lo he probado en Firefox y Chrome todavía, pero puede ayudarte más rápido. Mañana haré las pruebas y actualizaré la respuesta si esto no funciona.

27
Wellington Zanelli

Tuve este problema en AngularJS y en Firefox. (La recarga estaba bien en Chrome). Mediante el uso de setTimeout problema resuelto.

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

¿Has probado esto ?:

window.location = window.location;

Aparentemente puedes soltar la "ventana", pero no lo he probado yo mismo.

10
Shylo Hana

Tuve el mismo problema en Chrome y Firefox. Pude solucionar el problema haciendo que el servidor respondiera con la URL de la página. En su caso, podría tener la respuesta como el nuevo valor para el estado del usuario. Aquí hay dos ejemplos:

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

..y la respuesta del servidor

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

Esto eliminó la inconsistencia en Chrome y la página se recarga sin fallar.

2
Michael

Aquí, esto me funciona tanto con Fire Fox como con Chrome y está funcionando bien con IE.

object.reload(forcedReload);
1
Dhruv Gurjar

Mira esto Puedes forzar la recarga para obtener la página del servidor configurando el parámetro forceGet en verdadero:

location.reload(true);
1

La nota clave desde mi perspectiva es que la ubicación de la función para mí tenía que estar por encima de la ubicación en la que se originó la llamada. Al pensar que el navegador interpreta el javascript de arriba a abajo, si mi código para recargar se encontraba debajo del objeto que lo invoca, falla. Si pongo el código encima de él, window.location.href = window.location.href; trabajó.

0
Matt Meents