我正在尝试使用前端的@EventListener
和后端的Angular JS
来实现登录功能。下面是角度js控制器的代码片段。这不会将用户重定向到相应的页面,在调试时,控件不会进入PHP + Zend
部分,而是进入success
部分error
。但是如果我将with data being NULL
部分放在函数外部,则至少控件进入成功部分,数据是要重定向的下一页的数据。
我可能缺少什么以及实现重定向的正确方法是什么?
在下面的代码中,控件不会进入成功部分。
$http
在下面的代码中,控件进入成功部分。
var myApp = angular.module('myApp',[]);
myApp.controller('loginCtrl', function ($scope, $http) {
$scope.authenticatelogin = function () {
$http({
url: "/admin/auth/authenticatelogin",
method: "POST",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $.param({login: $scope.login, password: $scope.password, rememberMe: $scope.remember})
}).success(function(data, status, headers, config) {
$window.location.href= "index/index";
$scope.data = data;
}).error(function(data, status, headers, config) {
$scope.status = status;
});
};
});
答案 0 :(得分:0)
我宁愿选择成功/错误回调作为then
方法的一部分。
从版本1.4.5的角度文档:
$ http遗留承诺方法成功与错误 弃用。请改用标准方法。如果 $ httpProvider.useLegacyPromiseExtensions设置为false然后这些 方法将抛出$ http / legacy错误。
试试这个,虽然如果你说你的代码在闭包之外工作,它可能不是你想要的解决方案:
$http({
url: "/admin/auth/authenticatelogin",
method: "POST",
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: $.param({login: $scope.login, password: $scope.password, rememberMe: $scope.remember})
}).then(function(data, status, headers, config) {
$window.location.href= "index/index";
$scope.data = data;
}, function(data, status, headers, config) {
$scope.status = status;
});