使用 AngularJS 在 AJAX 请求中设置 cookie
Setting a cookie in AJAX request with AngularJS
我正在尝试设置一个 cookie,其中包含从 AngularJS 中的 Ajax 请求中检索到的令牌值。
起初,我通过简单地在我的 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
见AnguleJS: API : $cookies and How to access cookies in AngularJS?
Angular 在版本 1.4.x 中弃用了 $cookieStore,因此如果您使用的是最新版本的 angular,请改用 $cookies。 $cookieStore 和 $cookies
的语法保持不变
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);
})
};
}]);
$cookieStore.put('myToken', $scope.myToken);
无效,现在需要使用
$cookies.put('myToken', $scope.myToken);
好的,所以我犯了一些菜鸟错误。这是现在对我有用的东西:
- 通过使用缩小脚本,我需要映射范围 "Uncaught Error: [$injector:unpr]" with angular after deployment
- 我需要声明相同版本的脚本。我现在使用的是 angular.min.js 和 angular-cookies.min.js 版本 1.6.3 (Index of /1.6.3/)
- 正如两位回复者所说,$cookieStores 很久以前就被弃用了 $cookieStore deprecated
我正在尝试设置一个 cookie,其中包含从 AngularJS 中的 Ajax 请求中检索到的令牌值。
起初,我通过简单地在我的 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
见AnguleJS: API : $cookies and How to access cookies in AngularJS?
Angular 在版本 1.4.x 中弃用了 $cookieStore,因此如果您使用的是最新版本的 angular,请改用 $cookies。 $cookieStore 和 $cookies
的语法保持不变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);
})
};
}]);
$cookieStore.put('myToken', $scope.myToken);
无效,现在需要使用
$cookies.put('myToken', $scope.myToken);
好的,所以我犯了一些菜鸟错误。这是现在对我有用的东西:
- 通过使用缩小脚本,我需要映射范围 "Uncaught Error: [$injector:unpr]" with angular after deployment
- 我需要声明相同版本的脚本。我现在使用的是 angular.min.js 和 angular-cookies.min.js 版本 1.6.3 (Index of /1.6.3/)
- 正如两位回复者所说,$cookieStores 很久以前就被弃用了 $cookieStore deprecated