如何在另一个HTTP请求中使用来自一个HTTP请求的$ scope值

时间:2017-01-29 08:16:33

标签: javascript angularjs http

我正在使用AngularJS将表单数据发送到服务器。

app.controller("OrganizerReg", ["$scope","$http", function($scope,$http) {


$scope.userOrganizer = {};


$scope.processform = function() {

    $http ({

            method: 'POST',
            url: 'http://52.11.67.77:3000/api/users',
            headers: {'Content-Type': 'application/json'},
            data: JSON.stringify($scope.userOrganizer)
    })
        .success(function(response) {
            console.log(response.user_id);
            $scope.user_id = response.user_id;
    })


    $http ({

        method: 'POST',
        url : 'http://52.11.67.77:3000/api/users/'+$scope.user_id+'/accessTokens',


    })
        .success(function(response) {

            console.log(response);
        })


}

为了获取访问令牌,我需要发送一个POST请求。来自第一个HTTP请求的响应给出了生成访问令牌所需的user_id。问题是每当我发送请求时,$scope.user_id都会在标头中返回undefined。如何设置我的$scope.user_id全局,以便它可以被另一个HTTP请求使用。

修改 我读了duplicate question,但它仍然没有帮助我。

1 个答案:

答案 0 :(得分:5)

使用promise chain在另一个之后调用请求

function firstReq(){
    return $http({
        method: 'POST',
        url: 'http://52.11.67.77:3000/api/users',
        headers: {'Content-Type': 'application/json'},
        data: JSON.stringify($scope.userOrganizer)
    })
}

function secondReq(){
   return $http({
      method: 'POST',
      url : 'http://52.11.67.77:3000/api/users/' +$scope.user_id + '/accessTokens',
   })
}

$scope.processform = function() {
     firstReq()
       .then( function( response )
        {

            console.log(response.data.user_id);
            $scope.user_id = response.data.user_id;
            return secondReq();
        })
        .then(function(response){
           console.log(response.data);
        })


}