Windows.history.back()+ location.reload()jQuery

2021/01/24 06:51 · jquery ·  · 0评论

我的代码有问题。目的是完成一个简单的表单,然后单击“提交”按钮。它执行Ajax请求进入该方法。在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(); 有时,这是与ajax调用或与设计相关的挑战的javascript兼容性问题。

我将使用以下功能返回刷新。

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插件。

这是正确的答案。它将刷新上一页。

window.location=document.referrer;

试试这些...

选项1

window.location=document.referrer;

选项2

window.location.reload(history.back());

你不能做window.history.back(); 和location.reload(); 在相同的功能。

window.history.back()中断了JavaScript流程,并重定向到上一页,location.reload()从未处理。

使用window.history.back()时,必须在您重定向到的页面上调用location.reload()。

我将使用url而不是history.back进行重定向,这样既可以重定向又可以刷新。

经过几天的努力,事实证明您不能在a之后执行window.location.reload()window.history.go(-2),因为代码在window.history.go(-2)之后停止运行而且html规范基本上将ahistory.go(-2)视为与单击后退按钮相同,并且应按原样检索页面,而不是现在的页面。有人谈论在Web服务器中设置缓存头以关闭缓存,但我不想这样做。

对我来说,解决方案是使用会话存储在浏览器sessionStorage.setItem('refresh', 'true');中通过“主题”或需要刷新的下一页中的“然后”设置标志

if (sessionStorage.getItem("refresh") == "true") { 
    sessionStorage.removeItem("refresh"); window.location.reload()
}

因此,基本上告诉它在sessionStorage中重新加载,然后在页面顶部检查是否需要重新加载。

希望这能帮助一些沮丧的人。

window.history.back()不支持页面的重新加载或刷新。但是,如果可以,可以使用以下更新

window.history.back()
window.location.reload()

但是,真正的完整解决方案如下:我编写了一项服务来跟踪上一页,然后使用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;       
    });

确保您已经从index.html中包含了这个js文件

<script src="scripts/components/util/route.service.js"></script>

现在,您可以从州提供者或控制器中访问此服务并进行导航

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('^');
 })
本文地址:http://jquery.askforanswer.com/windows-history-back-location-reloadjquery.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 admin 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!