0

我一直试图让它工作,从概念上讲,它只需单击标签,它就会调用一个返回 JSON 结果的 REST 服务,我在其中获取国家名称并将其显示为测试。我正在使用角度。

每次我点击它都会返回状态为 0。相信这是 plnker http://plnkr.co/edit/k3Z6Ufi734oYE4ciVJs8

这是 HTML ,它只是通过 ng-click 调用 GetInfo 函数

<!DOCTYPE html>
<html ng-app="mainModule">
<!--http://plnkr.co/edit/k3Z6Ufi734oYE4ciVJs8-->
  <head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>    
    <link href="style.css" rel="stylesheet" />
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
    <script src="app.js"></script>
  </head>

  <body ng-controller="MainCtrl">
    <p>Hello {{name}}!</p>

        <div><b ng-click="GetInfo()">Click Me</b></div>

    <b>{{AdditionalInfo.geobytescountry}}</b>
  </body>

</html>

这是 Angular 后端。

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

app.controller('MainCtrl', function($scope, $http) {
  $scope.name = 'World';

  var cityDetailsUrl = "http://gd.geobytes.com/GetCityDetails?callback=?&fqcn=new%20york,%20NY,%20United%20States";

   $scope.AdditionalInfo =  {};

   $scope.GetInfo =  function ()
   {
       $http.get(cityDetailsUrl)
              .success(function(data, status, header, config){
                      console.log('ok'); 
                      $scope.AdditionalInfo = data; 
                      console.log(data);})
              .error(function(data, status, header, config){
                      console.log('error'); 
                      $scope.AdditionalInfo = data; 
                      console.log(status);});
   }


});

当我在网络浏览器中尝试 id 时,提供的链接应该会产生 JSON 响应。类似于这个 "geobytesinternet":"US","geobytescountry":"United States"

4

2 回答 2

2

在您的 Plunker 示例中,这似乎是两个问题。

首先,您似乎想使用JSONP,所以您应该使用$http.jsonp而不是,由于违反同源策略$http.get,简单会失败。$http.get

另一个问题是您的 URL 应该具有属性callback=JSON_CALLBACK而不是callback=?JSONP 才能工作。解决这两个问题后,代码似乎可以正常工作。

查看 Plunker 的编辑版本:http: //plnkr.co/edit/SYB9TI29MOHfNPw1jjQT

于 2013-11-14T23:25:47.487 回答
1

找到了。由于服务器返回的是 jsonp,而不是 json,请将您的 url 修改JSON_CALLBACK为: http://gd.geobytes.com/GetCityDetails?callback=JSON_CALLBACK&fqcn=new%20york,%20NY,%20United%20States

并使用$http.jsonp而不是$http.get. 这是修改后的 Plunker。

http://plnkr.co/edit/Jcs4rQHbINZyLwEN3VeR?p=preview

于 2013-11-14T23:25:55.490 回答