Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在登录页面上显示http错误消息_Javascript_Angularjs - Fatal编程技术网

Javascript 如何在登录页面上显示http错误消息

Javascript 如何在登录页面上显示http错误消息,javascript,angularjs,Javascript,Angularjs,在我的登录页面上,ngMessage用于在表单验证失败时显示错误消息。但现在需要在发生http 500错误时显示此div。当http错误发生时,我可以得到相应的错误消息,但当时不知道如何显示ngMessage div html: 更新: 如果我只使用ng if,则可以显示表单验证消息和http错误消息,但如果没有ngMessage,表单验证消息将不会是动态的您可能希望为所有XHR处理非200 http,而不仅仅是用于身份验证。 您可以通过使用http响应拦截器来实现这一点,该拦截器可以计算每个X

在我的登录页面上,ngMessage用于在表单验证失败时显示错误消息。但现在需要在发生http 500错误时显示此div。当http错误发生时,我可以得到相应的错误消息,但当时不知道如何显示ngMessage div

html:

更新:
如果我只使用ng if,则可以显示表单验证消息和http错误消息,但如果没有ngMessage,表单验证消息将不会是动态的

您可能希望为所有XHR处理非200 http,而不仅仅是用于身份验证。 您可以通过使用http响应拦截器来实现这一点,该拦截器可以计算每个XHR的http代码

您可能需要在登录成功或登录错误以外的其他功能中使用消息。您可以为这些消息创建控制器,如登录成功、失败、用户修改成功、失败。。。您可以通过侦听消息控制器中的事件来执行此操作

然后,您可以从HTTP响应拦截器触发事件,通知消息控制器根据HTTP代码显示消息


最后,如果您想以不同的方式处理用于身份验证的HTTP错误代码,您可以使用Factorze$HTTP和他自己的HTTP响应拦截器,将您想要的消息发送到消息控制器

您需要做的是将身份验证服务用作异步验证器。AngularJS 1.3中添加了异步验证。
<div class="error_msg" ng-if="form_login.$submitted" ng-messages="form_login.$error" flex="initial">
    <div class="alertmsg" ng-message="required" flex">{{errormsg | i18next}}</div>
</div>
loginModule.controller("loginController", ['$http', '$window', '$rootScope', '$scope', '$location', 'authenticationService', '$i18next', function($http, $window, $rootScope, $scope, $location, authenticationService, $i18next){

    $scope.newclass = false;
    $scope.errormsg = 'login.alertmsg';
    $scope.login = function(){
        if($scope.form_login.$invalid){
            return false;
        }else{
            $scope.newclass = true;
            $scope.dataloading = true;
            authenticationService.login($scope.username, $scope.password, 
                function(response){
                if(response.data.status_code == 200){
                    $window.location.href = 'view/home.html';
                }else if(response.data.status_code == 500){
                    $scope.errormsg = 'error_code' + '.' +response.data.payload.error_code;
                    console.log($scope.errormsg);
                    $scope.dataloading = false;
                    $scope.newclass = false;
                }
            },
                function(response){
                    $scope.dataloading = false;
                    $scope.newclass = false;

            });
        }
    };
}]);