Ответ 1
Он уже вернется, прежде чем он выполнит перезагрузку.
Вам лучше заменить:
window.history.back();
location.reload();
с:
window.location.replace("pagehere.html");
У меня проблема в моем коде. Цель состоит в том, чтобы заполнить простую форму, затем нажмите кнопку отправки. Он выполняет Ajax resquest, чтобы идти в методе. При успешном выполнении запроса ajax я использую windows.history.back(), чтобы перейти на предыдущую страницу и здесь я хочу обновить эту страницу, чтобы обновить значения, которые модифицируются формой! У вас есть идея?
$('#form_edit').submit(function (e)
{
e.preventDefault();
$.ajax({
url: $('#form_edit').attr('action'),
type: 'POST',
cache: false,
data: $(this).serialize(),
success: function (data) {
if (data === true) {
alert("Modification réussie !");
window.history.back();
location.reload(); <= on success i want to refresh previous page
}
else {
alert("Modification échouée !");
}
},
error: function ()
{
alert("Modification échouée !");
}
})
})
Он уже вернется, прежде чем он выполнит перезагрузку.
Вам лучше заменить:
window.history.back();
location.reload();
с:
window.location.replace("pagehere.html");
window.history.back();
Иногда это проблема совместимости JavaScript с вызовом ajax или проблем, связанных с дизайном.
Я бы использовал эту функцию ниже, чтобы вернуться с обновлением.
function GoBackWithRefresh(event) {
if ('referrer' in document) {
window.location = document.referrer;
/* OR */
//location.replace(document.referrer);
} else {
window.history.back();
}
}
В своем HTML используйте:
<a href="#" onclick="GoBackWithRefresh();return false;">BACK</a>'
Для дополнительной настройки вы можете использовать плагины history.js.
Попробуйте эти...
Вариант1
window.location=document.referrer;
Вариант2
window.location.reload(history.back());
Вы не можете сделать window.history.back(); и location.reload(); в той же функции.
window.history.back() разбивает поток javascript и перенаправляет на предыдущую страницу, location.reload() никогда не обрабатывается.
location.reload() необходимо вызвать на странице, на которую вы перенаправляете при использовании window.history.back().
Я бы использовал URL для перенаправления вместо history.back, который дает вам как перенаправление, так и обновление.
Это правильный ответ. Это обновит предыдущую страницу.
window.location=document.referrer;
window.history.back() не поддерживает перезагрузку или обновление страницы. Но вы можете использовать следующие, если вы в порядке с дополнительным обновлением
window.history.back()
window.location.reload()
Однако реальное полное решение было бы следующим: Я написал службу для отслеживания предыдущей страницы, а затем перейдите на эту страницу с перезагрузкой: true
Вот как я это сделал.
'use strict';
angular.module('tryme5App')
.factory('RouterTracker', function RouterTracker($rootScope) {
var routeHistory = [];
var service = {
getRouteHistory: getRouteHistory
};
$rootScope.$on('$stateChangeSuccess', function (ev, to, toParams, from, fromParams) {
routeHistory = [];
routeHistory.push({route: from, routeParams: fromParams});
});
function getRouteHistory() {
return routeHistory;
}
return service;
});
Убедитесь, что вы включили этот js файл из index.html
<script src="scripts/components/util/route.service.js"></script>
Теперь у вас stateprovider или controller вы можете получить доступ к этой услуге и перемещаться по
var routeHistory = RouterTracker.getRouteHistory();
console.log(routeHistory[0].route.name)
$state.go(routeHistory[0].route.name, null, { reload: true });
или, альтернативно, даже выполнить проверки и условную маршрутизацию
var routeHistory = RouterTracker.getRouteHistory();
console.log(routeHistory[0].route.name)
if(routeHistory[0].route.name == 'seat') {
$state.go('seat', null, { reload: true });
} else {
window.history.back()
}
Убедитесь, что вы добавили RouterTracker в качестве аргумента в свою функцию в моем случае это было:
.state('seat.new', {
parent: 'seat',
url: '/new',
data: {
authorities: ['ROLE_USER'],
},
onEnter: ['$stateParams', '$state', '$uibModal', 'RouterTracker', function($stateParams, $state, $uibModal, RouterTracker) {
$uibModal.open({
//....Open dialog.....
}).result.then(function(result) {
var routeHistory = RouterTracker.getRouteHistory();
console.log(routeHistory[0].route.name)
$state.go(routeHistory[0].route.name, null, { reload: true });
}, function() {
$state.go('^');
})