Search code examples
javascriptangularjsundefinedangular-http

Undefined variable $http request


I'm performing a GET - request on my back end to retrieve some JSON - data. I want to store a part of the data in a variable because I want to use it after the request. But everytime, the variable is undefined while I did the same thing in another controller. Can someone tell me what I'm doing wrong?

This is the code:

 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; 

EDIT POST CALL:

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;
  });

Solution

  • You can put your POST $http call inside a function and call it in the .success of the GET.

     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...
    }