javascript - 有 Angular 。如何将 json 响应转换为 jsonp 响应?

标签 javascript jquery json angularjs jsonp

我使用 openweathermap api 获取 json 数据,但是我需要获取并使用 jsonp 数据,如何在我的 Angular 服务中执行此操作?

app.factory('forecast', ['$http', function($http) { 
  this.sendAPIRequest = function(city){
      return $http.get('http://api.openweathermap.org/data/2.5/forecast/city?q='+city+'&units=metric&mo') 
      .success(function(data) { 
          return data; 
      }) 
      .error(function(err) { 
          return err; 
      }); 
  },

最佳答案

https://docs.angularjs.org/api/ng/service/ $http#jsonp 演示使用 Angular 接收 JSONP 对象的正确方法。

$http 服务调用(来自 AngularDocs)如下所示:

$http({method: 'JSONP', url: $scope.url, cache: $templateCache})
    .success(function(data, status) {
        $scope.status = status;
        $scope.data = data;
    })...

虽然标记绑定(bind)此功能是:

<div ng-controller="FetchController">
  <select ng-model="method" aria-label="Request method">
    <option>GET</option>
    <option>JSONP</option>
  </select>
  <input type="text" ng-model="url" size="80" aria-label="URL" />
  <button id="fetchbtn" ng-click="fetch()">fetch</button><br>
  <button id="samplegetbtn" ng-click="updateModel('GET', 'http-hello.html')">Sample GET</button>
  <button id="samplejsonpbtn"
    ng-click="updateModel('JSONP',
                  'https://angularjs.org/greet.php?callback=JSON_CALLBACK&name=Super%20Hero')">
    Sample JSONP
  </button>
  <button id="invalidjsonpbtn"
    ng-click="updateModel('JSONP', 'https://angularjs.org/doesntexist&callback=JSON_CALLBACK')">
      Invalid JSONP
    </button>
  <pre>http status code: {{status}}</pre>
  <pre>http response data: {{data}}</pre>
</div>

所以基本上你的最终结果是:

app.factory('forecast', ['$http', function($http) { 
  this.sendAPIRequest = function(city){
       return $http.jsonp('http://api.openweathermap.org/data/2.5/forecast/city?q='+city+'&units=metric&mo') 
       .success(function(data) { 
           return data; 
       }) 
       .error(function(err) { 
           return err; 
       }); 
   },

如下所示:parsing JSONP $http.jsonp() response in angular.js

关于javascript - 有 Angular 。如何将 json 响应转换为 jsonp 响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30824964/

相关文章:

javascript - 点击事件延迟开始动画

java - 简单的java库,使用getters/setter而不是属性(GSON)将json反序列化为java对象

java - Android - 来自服务器的 JSON 为空

javascript hasOwnProperty 返回 true 而不是 false?

javascript - 手机长按增加位置

javascript - 如何将 danvk 可重新排序列与动态创建的表一起使用?

java - 如何在自己的自定义反序列化器中使用一些 Jackson 反序列化器?

javascript - 打开 IE 并注入(inject)变量值(例如 ScriptEngineMinorVersion)

javascript - Dynatree.js 如何使用 dyna.js 在 html 中选择节点

javascript - MVC Controller 方法不被 View 中的 jquery 触发