未定义的变量$ http请求

时间:2015-05-15 05:49:56

标签: javascript angularjs undefined angular-http

我正在我的后端执行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 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;
  });

2 个答案:

答案 0 :(得分:2)

您正在执行异步get请求,该请求会立即返回,然后将itemNumber(自get请求尚未完成时尚未定义)分配给您的{{1 }}

您需要在回调中进行分配:

item.number

答案 1 :(得分:2)

您可以将$http来电function调用到.success内并在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... } 中调用。

heat.exe: The directory could not be found