Window.location.reload не работает для Firefox и Chrome

Я хочу изменить статус пользователя при нажатии кнопки, так что все, что я делаю, это определение текущего состояния и изменение, если это необходимо.

Но в этом случае изменяется статус в бэкэнд, но отображается статус, который нужно обновить, так как при обновлении он проверяет текущий статус и показывает. Поэтому я использую свойство window.location.reload для отображения последнего статуса на странице

Все вещи отлично работают в IE. Но в случае Firefox и Chrome статус не меняется. Я думаю, что "window.location.reload" не работает, потому что, когда я просто прокомментирую эту строку и попробую нажать кнопку и вручную обновить страницу, она покажет изменения Status.

Можете ли вы предложить, что я должен использовать, чтобы сделать эту работу в Firefox и Chrome?

Когда я googled, я нашел где-то это работает в Firefox и Chrome, если вы дадите его в "setTimeout()". Я попробовал, но даже тогда он не работает для меня.

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

Пожалуйста, предложите!

Ответ 1

У меня есть еще два варианта:

history.go(0);

и

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

Я еще не тестировал его в Firefox и Chrome, но это может помочь вам быстрее. Завтра я буду делать тесты и обновлять ответ, если это не работает.

ИЗМЕНИТЬ

Я разработал jsFiddle, чтобы показать вам несколько примеров:

http://jsfiddle.net/Zanelli/kpJxU/1/

Я надеюсь, что кто-то работает для вас (здесь все работает нормально).

Ответ 2

У меня была эта проблема в AngularJS и в Firefox. (Перезагрузка в Chrome была прекрасной). С помощью решения setTimeout решена.

setTimeout(function(){
  window.location.reload();
});

Ответ 3

Вы пробовали это?:

window.location = window.location;

По-видимому, вы можете отбросить "окно", но сами не пробовали.

Ответ 4

У меня была такая же проблема в Chrome и Firefox. Я смог устранить проблему, отвечая на сервер URL-адресом страницы. Для вашего случая вы можете получить ответ на новое значение для статуса пользователя. Вот два примера:

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

.. и ответ сервера

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

Это устранило несогласованность в Chrome и перезагрузку страницы в обязательном порядке.

Ответ 5

Посмотрите это Вы можете заставить перезагрузку получить страницу с сервера, установив для параметра forceGet значение true:

location.reload(true);

Ответ 6

Здесь это работает со мной с Fire Fox, а также с Crome и отлично работает с IE.

object.reload(forcedReload);

Ответ 7

Ключевая нота с моей точки зрения заключается в том, что расположение функции для меня должно быть выше местоположения, в котором был вызван вызов. Думая, что браузер интерпретирует javascript сверху вниз, если мой код для перезагрузки находился ниже объекта, который его вызывает, он терпит неудачу. Если я поставил над ним код, window.location.href= window.location.href; работал.