Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript angularjs中控制器内的多个$http调用_Javascript_Angularjs - Fatal编程技术网

Javascript angularjs中控制器内的多个$http调用

Javascript angularjs中控制器内的多个$http调用,javascript,angularjs,Javascript,Angularjs,我正在尝试用angularJS实现WeGoAPI。我面临的问题是,要获得hotels列表,我需要进行三次API调用,每次调用的结果都会提供一些信息,这些信息需要传递到下一次API调用。我面临的问题是,我能够成功拨打第一个电话,但无法继续。我尝试使用console.log,发现在进行了第二次API调用之后,执行既不会转到成功回调,也不会转到错误回调。 这是我的密码:- var app = angular.module('tripochill', []); app.controller('Main

我正在尝试用angularJS实现WeGoAPI。我面临的问题是,要获得hotels列表,我需要进行三次API调用,每次调用的结果都会提供一些信息,这些信息需要传递到下一次API调用。我面临的问题是,我能够成功拨打第一个电话,但无法继续。我尝试使用console.log,发现在进行了第二次API调用之后,执行既不会转到成功回调,也不会转到错误回调。 这是我的密码:-

var app = angular.module('tripochill', []);

app.controller('MainCtrl', function($scope, $http, $log) {

  $scope.city = "";
  $scope.ts_code = #####;
  $scope.key = ##########;

  $("#from").on("change", function() {
    $scope.checkin = $(this).val();
    console.log($scope.checkin);

    chk = $scope.checkin;
    day = chk.substr(0, 2);
    mon = chk.substr(3, 2);
    yr = chk.substr(6);
    $scope.checkin = (yr + "-" + day + "-" + mon);

    console.log($scope.checkin);
  });


  $("#to").on("change", function() {
    $scope.checkout = $(this).val();
    console.log($scope.checkout);

    chk = $scope.checkout;
    day = chk.substr(0, 2);
    mon = chk.substr(3, 2);
    yr = chk.substr(6);
    $scope.checkout = (yr + "-" + day + "-" + mon);

    console.log($scope.checkout);
  });

  console.log($scope.city[0]);

  $scope.cityNames = function() {
    $http.get("http://api.wego.com/hotels/api/locations/search?q=" + $scope.city[0] + "&ts_code=" + $scope.ts_code + "&key=" + $scope.key)
      .then(onSuccessName, onErrorName);
  };
  //Success method
  var onSuccessName = function(response) {
    $scope.count = response.data.count;
    console.log($scope.count);
    var count = 0;
    for (var i = 0; i < $scope.count; i++) {
      if (response.data.country_name == city[2]) {
        count = i;
        break;
      }
    }
    console.log(count);
    console.log(response.data.locations[count].id);
    id = response.data.locations[count];
    $scope.id = id.id;

    $scope.searchid = function() {
      console.log("hahahahaha");
      $http.get("http://api.wego.com/hotels/api/search/new?location_id=" + $scope.id + "&check_in=" + $scope.checkin + "&check_out=" + $scope.checkout + "&user_ip=direct&ts_code=" + $scope.ts_code + "&key=" + $scope.key)
        .then(onSuccessSearch, onErrorSearch);
    };
    var onSuccessSearch = function(response) {
      console.log("2");
      console.log(response.data);
      $scope.search_id = response.data;
    };
    var onErrorSearch = function(response) {
      console.log("here!!!");
      $log.info(response);
      $scope.info = "Could not retrieve data";
    };
  };
  //Error method

  var onErrorName = function(response) {
    $log.info(response);
    $scope.info = "Could not retrieve data";
  };

  /*function hotels(search_id){
    $scope.hotelList = function () {
          $http.get("http://api.wego.com/hotels/api/search/"+search_id+"&ts_code="
              +$scope.ts_code+"&key="+$scope.key)
        .then(onSuccessList, onErrorList);
      };
      var onSuccessList = function (response) {
          $scope.hotels = response.data;
          console.log($scope.hotels);
      };
      var onErrorList = function (response) {
          $log.info(response);
          $scope.info = "Could not retrieve data";
      };
  }*/
});

app.controller('SecondCtrl', function($scope) {

});
var-app=angular.module('tripochill',[]);
app.controller('MainCtrl',函数($scope,$http,$log){
$scope.city=“”;
$scope.ts#u代码=#####;
$scope.key=###########;
$(“#from”)。关于(“更改”,函数(){
$scope.checkin=$(this.val();
log($scope.checkin);
chk=$scope.checkin;
日=chk.substr(0,2);
mon=chk.substr(3,2);
yr=chk.substr(6);
$scope.checkin=(年+“-”+日+“-”+月);
log($scope.checkin);
});
$(“#to”)。关于(“更改”,函数(){
$scope.checkout=$(this.val();
log($scope.checkout);
chk=$scope.checkout;
日=chk.substr(0,2);
mon=chk.substr(3,2);
yr=chk.substr(6);
$scope.checkout=(年+“-”+日+“-”+月);
log($scope.checkout);
});
console.log($scope.city[0]);
$scope.cityNames=函数(){
$http.get(“http://api.wego.com/hotels/api/locations/search?q=“+$scope.city[0]+”&ts_code=“+$scope.ts_code+”&key=“+$scope.key”)
。然后(onSuccessName,onErrorName);
};
//成功方法
var onSuccessName=函数(响应){
$scope.count=response.data.count;
log($scope.count);
var计数=0;
对于(变量i=0;i<$scope.count;i++){
如果(response.data.country_name==城市[2]){
计数=i;
打破
}
}
控制台日志(计数);
console.log(response.data.locations[count].id);
id=响应.数据.位置[计数];
$scope.id=id.id;
$scope.searchid=函数(){
console.log(“哈哈哈”);
$http.get(“http://api.wego.com/hotels/api/search/new?location_id=“++$scope.id+”&check_-in=“++$scope.checkin+”&check_-out=“++$scope.checkout+”&user_-ip=direct&ts_-code=“++$scope.ts_-code+”&key=“++$scope.key”)
。然后(onSuccessSearch、onErrorSearch);
};
var onSuccessSearch=函数(响应){
控制台日志(“2”);
console.log(response.data);
$scope.search\u id=response.data;
};
var onErrorSearch=函数(响应){
log(“这里!!!”);
$log.info(响应);
$scope.info=“无法检索数据”;
};
};
//误差法
var onErrorName=函数(响应){
$log.info(响应);
$scope.info=“无法检索数据”;
};
/*多功能酒店(搜索id){
$scope.hotelList=函数(){
$http.get(“http://api.wego.com/hotels/api/search/“+搜索id+”&ts\U代码=”
+$scope.ts_code+“&key=“+$scope.key”)
。然后(onSuccessList,onErrorList);
};
var onSuccessList=函数(响应){
$scope.hotels=response.data;
console.log($scope.hotels);
};
var onErrorList=函数(响应){
$log.info(响应);
$scope.info=“无法检索数据”;
};
}*/
});
应用程序控制器('SecondCtrl',函数($scope){
});

我发现从未调用过
$scope.searchid
,请尝试调用
$scope.searchid()
来启动第二个
api
调用

因为您没有从任何地方调用
$scope.searchid
。所以你需要叫它

$scope.searchid = function () {
   console.log("hahahahaha");
   $http.get("http://api.wego.com/hotels/api/search/new?location_id="+$scope.id+"&check_in="
                +$scope.checkin+"&check_out="+$scope.checkout+"&user_ip=direct&ts_code="+$scope.ts_code
                +"&key="+$scope.key)
        .then(onSuccessSearch, onErrorSearch);
};

$scope.searchid(); // add this line in your code

var onSuccessSearch = function (response) {
     console.log("2");
     console.log(response.data);
     $scope.search_id = response.data;
};

是的,你们是对的。但除此之外,我必须将第二个方法从第一个方法的成功回调中移出,并且只从回调内部调用第二个方法。。谢谢@shaishab和thalaivar