AngularJS在没有数据的情况下使用get on json rest服务获得了奇怪的响应

时间:2017-10-26 17:13:17

标签: angularjs json rest

这让我感到沮丧。我有一个宁静的服务,在链接上运行JSON数据:http://localhost:51133/API/SalesSystem/

所以它在我的电脑上本地运行。我可以使用基于WPF的界面从此服务获取数据没有问题。

我正在测试的另一项服务是:http://rest-service.guides.spring.io/greeting

但是从我自己的服务中,似乎出现了某种错误,我无法弄清楚出了什么问题。 spring服务使用响应函数给我一个响应,但我的服务使用成功函数函数给出响应。非常混乱。

回应似乎是:

{"data":null,"status":-1,"config":{"method":"GET","transformRequest":[null],"transformResponse":[null],"jsonpCallbackParam":"callback","url":"http://localhost:51133/API/SalesSystem/","headers":{"Accept":"application/json, text/plain, */*"}},"statusText":"","xhrStatus":"error"}

我查了一下,似乎我可能需要启用Cors,但我不完全确定如何。我是从NuGet安装的,服务是用Visual Studio运行的,我添加了config.EnableCors();到我的WebApiConfig。

我的JS脚本:

angular.module('demo', [])
    .controller('Hello', function ($scope, $http) {
        $http.get('http://localhost:51133/API/SalesSystem/')
            //http://rest-service.guides.spring.io/greeting
            //http://localhost:51133/API/SalesSystem/
            .then(function (response) {
                $scope.hello = 'hello';
                $scope.district = response.data;
                console.debug(response.data);
                console.log(response.data)
            }, function success(response) {
                $scope.hello = 'hello2';
                $scope.district = response;
                $scope.rep = response.data;
                console.debug(response.data[0]);
                $scope.district = response.data[0];
                console.log(success.data)
            }, function error(response) {
                $scope.hello = 'hello3';
                $scope.district = error.data;
                console.log(error.data)
            });
    });

我的HTML:

<!doctype html>
<html ng-app="demo">
<head>
    <title>Hello AngularJS</title>
    <script src="Scripts/angular.min.js"></script>
    <script src="Scripts/hello.js"></script>
</head>

<body>
    <div ng-controller="Hello">
        <li>Id: <button>{{hello}}</button></li>
        <li>Area: {{district}}</li>
        <ul ng-repeat="obj in hello">
            <li>Area: {{obj.area}}</li>
        </ul>
        <p>The ID is {{rep.Id}}</p>
        <p>The content is {{hello.Area}}</p>
    </div>
</body>
</html>

我正在使用此服务使用基于WPF的前端,并不确定为什么它不能与AngularJS一起使用。

1 个答案:

答案 0 :(得分:1)

CORS问题与角度无关。它更多地与浏览器有关。

在外行人看来,cors情况是浏览器不允许其他来源的响应而不是url被处理,除非响应有一定的标题集。当然,它比这更复杂。响应没有那些你得到CORS问题的标题

要快速修复,您可以在浏览器中禁用CORS。

例如: - 如果您使用的是chrome,则可以运行它--disable-web-security flag