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; работал.