【问题标题】:angularjs GET url when loading view加载视图时的angularjs GET url
【发布时间】:2016-10-19 00:28:47
【问题描述】:

在加载我的一个视图时尝试进行 API 调用。

controllers.controller("detailsCtrl", ["$scope", "$routeParams", "$filter", "$http", function($scope, $routeParams, $filter, $http) {

  $scope.getCurrent = function(url, id, callBack, apiCall, promise) {
    var url = "api.openweathermap.org/data/2.5/weather?id=2172797";
    var id = "&appid=d436c04d23a5a44329eb8255190a84be";
    var callBack = "&callback=JSON_CALLBACK";
    var apiCall = url += id += callBack;
    var promise = $http.jsonp(apiCall);
    promise.success(function(response) {
      $scope.current = response.current;
      console.log($scope.current);
    });
  };

  $scope.cityName = $filter("filter")($scope.data.list, {
    id: $routeParams.cityId
  })[0];

}]);

在 html 中使用 ng-init

      <div ng-controller="detailsCtrl" ng-init="getCurrent()">
    <h1>{{ cityName.name }}</h1>
      <tr>
        <td>lat: {{cityName.coord.lat}}, lon: {{cityName.coord.lon}}</td>
        <td>{{}}</td>
        <td>{{}}</td>
        <td>{{}}</td>
        <td>{{}}</td>
        <td>Clouds: {{cityName.clouds.all}}</td>
        <td>{{}}</td>
        <td>{{}}</td>
      </tr>

  </div>

不断收到:http://localhost:8080/api.openweathermap.org/data/2.5/weather?id=2172797&appid=d436c04d23a5a44329eb8255190a84be&callback=angular.callbacks._1,有什么想法吗?

note 在用户导航到详细视图之前,还会在我的主视图中进行另一个 API 调用。当用户切换视图时尝试 ng-click,但它根本没有拨打电话。

【问题讨论】:

  • 您是否尝试过在路由上的 resolve 参数处进行调用?
  • 检查请求是否触发到正确的 url?
  • 在浏览器中测试了url,它可以工作。
  • 编辑:那个api支持jsonp吗?
  • 可以添加html代码吗?我不明白你到底想做什么?

标签: javascript angularjs


【解决方案1】:

我使用 angular2 而不是 angularjs,但相信您的问题与不正确的 http 请求更相关。我刚刚在 plunkr 中计算出你的样本:http://plnkr.co/edit/rOZOyAcAuVcTr3njqKfH?p=preview

getData: function () {
          var obj = {};
          var jsonData = JSON.stringify({ obj: obj }); //For POST
          var req = {
              method: 'POST',
              url: 'http://api.openweathermap.org/data/2.5/weather?id=2172797&appid=d436c04d23a5a44329eb8255190a84be',
          };
          return this.http.post(req.url, req.data, req)
          .toPromise()
          .then(function (response) {
              return response;

          });
      }

您的网址与您的解决方案相关可能有一个明显的原因。

希望这会有所帮助。

谢谢

【讨论】:

    【解决方案2】:

    请更改url如下和

    var url = "http://api.openweathermap.org/data/2.5/weather?id=2172797";
    

    因为您无法找到该网址。 在您的通话中,它将使 url 从当前 URL 中附加。

    【讨论】:

    • 对了,忘了 http,现在我在控制台中变得未定义,只有第一个 API 调用记录在控制台中。
    • Yes 标记了,参数中的 http:// 和 (response) 是否应该设置为 current。
    • 这不是你的问题!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-05-22
    • 2017-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-12
    • 1970-01-01
    相关资源
    最近更新 更多