【问题标题】:How to get data from RESTful web service?如何从 RESTful Web 服务获取数据?
【发布时间】:2015-11-19 16:03:24
【问题描述】:

我开发了一个 RESTful Web 服务。链接返回 json 代码,如下所示:

{"status":"itPassed","dest":"/elk2/kr659p/home"}

现在我想在我的屏幕上显示这些数据。

查看:

<!doctype html>
<html ng-app="myApp">
<head>
    <title>Hello AngularJS</title>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.8/angular.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.1/angular-resource.min.js"></script>
    <script src="../controllers/webservice.js"></script>
</head>

<body>
<div ng-controller="Hello">
    <p>The ID is {{greeting.status}}</p>
    <p>The content is {{greeting.dest}}</p>
</div>
</body>
</html>

我的控制器

angular.module('myApp', []).controller('Hello', function ($scope, $http) {
alert(1);
$http.get('http://9.124.130.197:2020/PatchAdminTool/rest/service/getstatus/123').
    success(function(data) {
        alert(2);

        $scope.greeting = data;
        alert(data);

    });
});

【问题讨论】:

  • 这就是你所有的代码吗? webservice.js 里面有什么?在跳转到 REST api 调用之前,您应该先从基本的 Angular js 教程开始。
  • 这是我的 webservice.js
  • 函数 Hello($scope,$http) { $http.get('localhost:2020/PatchAdminTool/rest/service/getstatus/123').成功(函数(数据){警报(数据);$scope.greeting =数据;警报(数据);}); }
  • 我知道,在这种情况下,这不是定义控制器的正确方法,请参阅@sagie gur-ari 的答案。

标签: angularjs web-services rest


【解决方案1】:

控制台没有错误?因为这并不是你在 angularJS 中编写控制器的方式。 你应该有类似的东西

angular.module('mymodule', []).controller('Hello', function ($scope, $http) {
    $http.get('http://9.124.130.197:2020/PatchAdminTool/rest/service/getstatus/123').
        success(function(data) {
            alert(data);
            $scope.greeting = data;
            alert(data);

        });
});

顺便问一下,警报真的显示了什么吗?

【讨论】:

  • 我定义这是一种方式。但我没有得到数据。
  • 你的意思是,http.get 中的成功函数永远不会被调用?或者被调用并且数据为空?并且...如果您将该网址粘贴到浏览器中会发生什么,您会看到什么?你能不能也像docs.angularjs.org/api/ng/service/$http 中写的那样为$http.get 定义错误函数,看看是否有错误?顺便说一句
  • 我把那个url复制粘贴到broser中。它会显示json对象。
  • 我在浏览器中粘贴了 url。它显示 json 对象。{"status":"itPassed","dest":"/elk2/kr659p/home"}
  • 但是 get.sucess 调用在您的应用程序中被触发了吗?你看到任何警报了吗?您是否也将错误函数放入 get 调用中?
【解决方案2】:

您是否尝试放置断点?
打开Chrome Debugger - 放置以下断点:

  1. $http.get 线上 - 看看您是否可以到达。
  2. alert(data) 行 - 查看数据是否包含您的预期。

【讨论】:

  • 我试图在 $http.get 工作之前发出警报,我在 $http.get 不显示之后又发出了一个警报。
  • 所以你没有到达 $http 调用。您编写控制器的方式可能有问题。请参阅@sagie gur-ari 答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-03-03
  • 2013-12-01
  • 2020-02-06
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
  • 1970-01-01
相关资源
最近更新 更多