未定义变量 $http 请求

Undefined variable $http request

我正在后端执行 GET - 请求以检索一些 JSON - 数据。我想将一部分数据存储在一个变量中,因为我想在请求之后使用它。但是每次,当我在另一个控制器中做同样的事情时,变量都是未定义的。有人可以告诉我我做错了什么吗?

这是代码:

 var itemNumber;
 $http.get(URLtoServer + 'serialNumber/' + $stateParams.serialNumber + '/?format=json').success(function(dataSerialNumber){
      itemNumber = dataSerialNumber.id;
    }).error(function(){
      //code
    });

    console.log(itemNumber);
    item.number = itemNumber; 

编辑POST呼叫:

var postPromise = $http.post(URLtoServer + 'problem/', item);

  postPromise.success(function (response) {
    angular.extend(item, response);
    showIssueReportedAlert($mdDialog); 

    $http.get('assets/settings/general.json').success(function(data){
      companyURL = data[0].url;

      $timeout(function(){
        //$window.location.href = companyURL;
      }, 3000);
    });         
  });

  postPromise.error(function(){
    showErrorAlert($mdDialog);

    $scope.renderSendbutton = true;
    $scope.showProgressCircular = false;
  });

您正在执行异步 get 请求,该请求立即 returns,然后分配 itemNumber(由于 get 请求尚未完成,目前未定义) 到您的 item.number.

你需要在回调中做赋值:

 var itemNumber;
 $http.get(URLtoServer + 'serialNumber/' + $stateParams.serialNumber + '/?format=json').success(function(dataSerialNumber){
      itemNumber = dataSerialNumber.id;

       console.log(itemNumber);
       item.number = itemNumber; 
    }).error(function(){
      //code
    });

您可以将 POST $http 调用放在 function 中,然后在 GET 的 .success 中调用它。

 var itemNumber;
 $http.get(URLtoServer + 'serialNumber/' + $stateParams.serialNumber + '/?format=json').success(function(dataSerialNumber){
      itemNumber = dataSerialNumber.id;

       console.log(itemNumber);
       item.number = itemNumber; 
       doPostCallNow(); //Calling the POST 
    }).error(function(){
      //code
    });

function doPostCallNow(){
    var postPromise = $http.post(URLtoServer + 'problem/', item); 
    //And rest of your code...
}