POST 后使用 AngularJS 重定向到不同的页面

Posted

技术标签:

【中文标题】POST 后使用 AngularJS 重定向到不同的页面【英文标题】:Redirect to a different page after POST using AngularJS 【发布时间】:2013-09-07 03:06:44 【问题描述】:

在搜索并没有提出解决方案后,我发布此代码 sn-p 寻求帮助。

$scope.createAddress = function () 
    $http(
        method: 'POST',
        url: '/addressBook/api/Person',
        data: $scope.person,
        headers: 
            'Content-Type': 'application/json; charset=utf-8'
        
    ).success(function (data) 
        $location.path('/addressBook');
    );

成功发布后,我想重定向到不同的页面。 $location.path 没有做到这一点。我已经尝试过 $scope.apply() ,因为其他一些人已经成功了。我是否遗漏了什么或不了解 $location 的用途?代码正在被命中。

【问题讨论】:

【参考方案1】:

记得将依赖注入到控制器中:

                                                       |-- inject!
angular.module('myApp.controllers', []).               v
controller('AddressController', function ($scope, $location, $http) 
  $http(
    method: 'POST',
    url: '/addressBook/api/Person',
    data: $scope.person,
    headers: 
        'Content-Type': 'application/json; charset=utf-8'
    
  ).success(function (data) 
    $location.path('/addressBook');
  );
);

【讨论】:

$window.location.href 有效,但您的选择 - 没有(但看起来更好),我还能错过什么? 感谢它帮助我重定向的答案。继续提供帮助。【参考方案2】:

应该有一些东西在监听路径变化,比如$routeProvider。是这样吗?

如果您需要将整页重新加载到其他(服务器端)路由,您可以尝试$window.location.href

【讨论】:

$window.location.href = '/addressbook'; 然后$window.location.href; 工作。感谢您的帮助!【参考方案3】:

在您的控制器中添加 $location。像这样 例如:app.controller('yourController', function($scope, $location, $http, etc...) 那么你的 $http 应该是这样的。

$http(.... ).success(function(response)  $location.path('/your path'))

但请确保您必须在 $routeProvider 配置中添加其他位置。 类似:

app.config(['$routeProvider', 
   function($routeProvider)  
   $routeProvider.
     when('/yournewlocation', 
      templateUrl: 'yourTemplate/yourpage'
   )
  
])

就是这样。好吧,你知道我在说什么。

【讨论】:

【参考方案4】:
.controller('regCtrl', ['$scope','$http', function($scope,$http) 

        $scope.submit = function() 
            alert("vf");

            $http.post("http://localhost:3000/insert",function(response,$location)
                if(response!= null)
                $location.path("/login");
            
            else
                $state.go('/register');
            
            );
            

            ]);

我的代码是这样的,注册页面后我只得到 json 响应,它没有导航到另一个页面

【讨论】:

【参考方案5】:

只需使用window.location.replace("/Home/Index");

【讨论】:

请考虑解释如何以及为什么解决这个问题。【参考方案6】:

最好的方法是最轻的

window.location.replace("/home/list");

【讨论】:

与其他答案相同的解决方案,例如***.com/a/62846667/2227743 没看到,冷静!

以上是关于POST 后使用 AngularJS 重定向到不同的页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 2 中的 POST 方法后重定向到成功

nodejs + multer + angularjs 无需重定向即可上传

AngularJS:如何解析 302 的响应

如果刷新(JWT)令牌未经授权(401响应),AngularJS重定向到登录

在我的 laravel 4 和 angularjs 应用程序中从一条路线重定向到另一条路线

如何在获取 post 调用后管理重定向请求