使用AngularJS在AJAX请求中设置cookie

时间:2017-03-15 00:51:20

标签: angularjs ajax cookies cookiestore

我正在尝试设置一个包含从AngularJS中的Ajax请求中检索到的标记值的cookie。

首先,我通过在html页面中显示令牌值来测试请求的结果 - > {{myToken}}。结果是正确的。现在,我试图将该值存储在cookie中。我为此目的添加的行是在**。

之间写的

在我的HTML页面中,我导入了angular.min.js(v1.4.8),然后angular-cookies.min.js(v1.6.3):

<!DOCTYPE html>
<html>

<head>

  <meta charset="UTF-8">
  <title>XXX</title>

  <link rel="stylesheet" href="assets/css/style.css" media="screen" type="text/css" />
  <script src="assets/scripts/angular.min.js"></script>
</head>

<body >

  <div ng-app="myApp" ng-controller="LoginCtrl">
    <h1>Log-in</h1><br>
    <form>
      <input type="text" name="user" placeholder="Username" ng-model="login">
      <input type="password" name="password" placeholder="Password" ng-model="password">
      <input type="submit" name="login" class="login login-submit" value="login" ng-click="myLogin()">
    </form>
    <div class="login-help">
      <a id="button-login" href="#">Register</a> • <a href="#">Forgot Password</a>
    </div>
<p>myToken: {{myToken}}</p>
  </div>

**<script src="assets/scripts/angular-cookies.min.js"></script>**
<script src="assets/scripts/myApp.js"></script>
<script src="assets/scripts/controllers/loginCtrl.js"></script>
</body>

</html>

myApp.js现在非常简单:

var app = angular.module('myApp', [**'ngCookies'**]);

loginCtrl.js在调用myLogin()时包含Ajax请求触发器。

app.controller('LoginCtrl', function($scope, $http**, $cookieStore**) {
  $scope.login     = "";
  $scope.password  = "";
  $scope.myLogin = function() {
    $http({ <request>})
    .then(function(response) {
      $scope.myToken = <token value>;
      **$cookieStore.put('myToken', $scope.myToken);**
    })
  };
});

我的页面存储在WampServer上,当我到达它时,我收到以下错误:

  

"Error: [$injector:unpr] http://errors.angularjs.org/1.4.8/$injector/unpr?p0=%24cookieStoreProvider%20%3C-%20%24cookieStore%20%3C-%20LoginCtrl

3 个答案:

答案 0 :(得分:0)

请参阅AnguleJS: API : $cookiesHow to access cookies in AngularJS?

Angular在版本1.4.x中弃用了$ cookieStore,因此如果您使用的是最新版本的angular,请使用$ cookies。 $ cookieStore&amp;的语法保持不变$饼干

app.controller('LoginCtrl', ['$scope', '$http', '$cookies', function($scope, $http, $cookies) {
    $scope.login     = "";
    $scope.password  = "";
    $scope.myLogin = function() {
        $http({ <request>})
        .then(function(response) {
            $scope.myToken = <token value>;
            $cookies.put('myToken', $scope.myToken);
        })
    };
}]);

答案 1 :(得分:0)

$cookieStore.put('myToken', $scope.myToken);现在无效,您需要使用

 $cookies.put('myToken', $scope.myToken);

答案 2 :(得分:0)

好的,所以我犯了几个noob错误。以下是我现在为我工作的内容:

  1. 通过使用缩小的脚本,我需要映射范围"Uncaught Error: [$injector:unpr]" with angular after deployment
  2. 我需要声明相同版本的脚本。我现在使用angular.min.js和angular-cookies.min.js版本1.6.3(Index of /1.6.3/
  3. 正如两位回复者所说,$ cookieStores很久以前就被弃用$cookieStore deprecated