【问题标题】:Redirect to a different page after POST using AngularJSPOST 后使用 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 的用途?代码正在被命中。

【问题讨论】:

    标签: post redirect angularjs 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");

        【讨论】:

        猜你喜欢
        • 2016-09-03
        • 1970-01-01
        • 1970-01-01
        • 2011-06-08
        • 1970-01-01
        • 2018-08-20
        • 2014-07-11
        • 1970-01-01
        • 2015-12-20
        相关资源
        最近更新 更多