无法在Angular.js中提取响应主体

时间:2017-05-07 01:34:22

标签: java angularjs netbeans

我有一个GET方法hello world服务,很简单地将“Hello world”返回给访问它的任何人 如果我通过REST API工具访问此方法,一切正常,并返回响应 更奇怪的是,通过检查日志,我知道请求提交得很好,但是我无法从响应中返回提取体。

<html>
<head>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
    <link rel="stylesheet" href="css/Mainstyle.css" type="text/css" media="screen"/>        
</head>

<div ng-app="betaApp" ng-controller="betaController">
    <p>The url of this page is:</p>
    <h3>{{"Server says: " + mywelcome}}</h3>
    <p>{{temp}}</p>

    <title>Beta</title>
    <div id="betaform" class="display">
        <p>{{5+5}}</p>          
    </div>
</div>


<script>
    var app = angular.module('betaApp', []);
    app.controller('betaController', function($scope, $http, $location) {
        $scope.temp = $location.absUrl();
        $http({
             url: "http://localhost:8080/API/HelloWorld", 
             method: "GET",
             params: {}  
        }).then(function (response) {
            $scope.mywelcome = response.data;
            $scope.testobj = response.status;
        });

    });
</script>

此代码的结果将正确显示变量temp,但不是myWelcome或testobj 我相信这意味着问题在于这段代码:

.then(function (response) {
            $scope.mywelcome = response.data;
            $scope.testobj = response.status;
        })

但是由于我对angular.js的不熟悉,我不确定到底出了什么问题或原因。 我的电话与文档匹配,但它不起作用,这是最奇特的。

更新:我找到了一个非常基本的解决方案,但我不会将其作为答案,因为我不喜欢它并且觉得有更好的方法。
问题是由于CORS相关原因导致响应被阻止 通过在每种方法中改变服务器端的响应来“解决”这个问题。

Response.status(200).entity("Hello World.").header("Access-Control-Allow-Origin", "*").build();

然而,你们中的精明人员会发现这意味着需要为每个方法添加标题,这看起来很艰巨。我将研究有更好的方法的可能性。

更新2:找到了更好,更简单的解决方案,但由于这已被标记为重复,除了链接到我感觉right solution.之外,我做不了什么
更新的标签,因为这是一个技术上与服务器问题有关的问题。

0 个答案:

没有答案