首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Angularjs获取令牌

用Angularjs获取令牌
EN

Stack Overflow用户
提问于 2016-11-18 19:12:23
回答 1查看 982关注 0票数 0

我正在开发一个Angularjs + Moodle + WebService应用程序

我已经做了一个小登录页,有一个问题。

我正在通过$.ajax获得我的用户的令牌,我可以在我的铬控制台中看到它。

问题是,我想保存这个令牌,以便在WS moodle函数中使用它,并且我使用JSON.strungify来获取令牌,但我没有成功。

我只是将-> {readystate: 1}作为警报,而不是获取一个令牌。但是在我的console.info(response);中,我得到了标记,显示了下一个图像:

我的密码是:

controller.js

代码语言:javascript
复制
var app = angular.module('mainApp', ['ngRoute', 'toaster', 'ngAnimate']);

app.config(function($routeProvider) {
    $routeProvider
    .when('/', {
        templateUrl: 'login.html'
    })
    .when('/dashboard', {
        resolve: {
            "check": function($location, $rootScope) {
                if(!$rootScope.loggedIn){
                    $location.path('/');
                } 
            }
        },  
        templateUrl: 'dashboard.html'   
    })
    .otherwise({
        redirectTo: '/'
    });
});


app.controller('loginCtrl', 

function($scope, $location, $rootScope) {
    $scope.submit = function() {
        /*if($scope.username == 'admin' && $scope.password == 'admin') {
            $rootScope.loggedIn = true;
            $location.path('/dashboard');
        } else {
            alert('Wrong Stuff');
        }*/
        $rootScope.loggedIn = true;
        var username = $scope.username;
        var password = $scope.password;
        postCredentials(username, password/*, createSession*/);

    };

    function postCredentials(username, password, callback) {
    if (username!==null || password!==null) {


        var serverurl = 'https://comunidaddeaprendizaje.cl/ac-cap/login/token.php';

         var data = {
             username: username,
             password: password,
             service: 'moodle_mobile_app' // your webservice name
         }

         var response = $.ajax(
                            {   type: 'POST',
                                data: data,
                                url: serverurl,
                                dataType: 'JSON'
                            }
                         );

        console.info(response);
        dataString = JSON.stringify(response);
        alert(dataString);

             if (dataString.indexOf('error') > 0) {
               alert('Invalid user credentials, please try again');
             };

         } else {
            alert('Something Wrong');
         }
     }

}

);

login.html

代码语言:javascript
复制
div class="breadcrumbs" id="breadcrumbs">
    <ul class="breadcrumb">
        <li>
            <i class="ace-icon fa fa-home home-icon"></i>
            <a href="#">Home</a>
        </li>
        <li class="active">Login</li>
    </ul>
</div>

<div class="page-content">

<div class="row">
<div class="space-6"></div>
<div class="col-sm-10 col-sm-offset-1">
    <div id="login-box" class="login-box visible widget-box no-border">
        <div class="widget-body">
        <div class="widget-main">

        <h4>Login ACCAP</h4>

            <div ng-controller="loginCtrl">
            <form action="/"  class="form-horizontal" id="myLogin">
            <div class="form-group">
                UserName: 
                <input type="text" class="form-control" id="username" ng-model="username" required focus><br>
                Password:  
                <input type="password" class="form-control" id="password" ng-model="password"  required>
                </br>
                <button type="button" class="width-35 pull-right btn btn-sm btn-primary" ng-click="submit()">
                <div class="col-sm-7">
                <i class="ace-icon fa fa-key"></i>
                Login
                </button>
                </div>
            </div>
            </form>
            </div>

         </div>
        </div>
    </div>
</div>
</div>
</div>

index.html

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>Login APP</title>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/angularjs-toaster/1.1.0/toaster.min.css" rel="stylesheet" />
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.7/angular.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.3/angular-route.js"></script>
    <script src="https://code.angularjs.org/1.2.0/angular-animate.min.js" ></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angularjs-toaster/1.1.0/toaster.min.js"></script>
    <script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.js"></script>
    <script src="controller.js"></script>
</head>
<body ng-app="mainApp">
    <div ng-view></div>
</body>
</html>

谢谢你的帮忙!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-18 19:17:28

response变量是一个包含大量响应信息的对象。这与你的回复不一样。

第二个错误是AJAX调用是异步的,因此不能在AJAX调用之后立即获得响应。你得等着回应。而不是

代码语言:javascript
复制
var response = $.ajax({
  type: 'POST',
  data: data,
  url: serverurl,
  dataType: 'JSON'
});
console.info(response);
dataString = JSON.stringify(response);
alert(dataString);
if(dataString.indexOf('error') > 0) {
  alert('Invalid user credentials, please try again');
};

你应该写

代码语言:javascript
复制
var response = $.ajax({
  type: 'POST',
  data: data,
  url: serverurl,
  dataType: 'JSON',
  success: function(response) {
    console.info(response);
    dataString = JSON.stringify(response);
    alert(dataString);
    if(dataString.indexOf('error') > 0) {
      alert('Invalid user credentials, please try again');
    };
  }
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40684413

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档