Angularjs $ http.get方法不起作用

时间:2013-12-11 08:06:38

标签: javascript http angularjs spring-mvc get

我有一个在端口8501上运行的微服务。

@RestController
@RequestMapping("/feeds")
public class FeedsController {

    @RequestMapping(method = GET)
    ResponseEntity<?> findAllFeeds() {
        return new ResponseEntity<String>("Hello", OK);
    }


}

当我添加网址http://localhost:8501/feeds时,浏览器会显示“Hello”。现在我试图通过angularjs get call

来访问它

在我的AngularJs中,我的代码是

'use strict';

var app = angular.module('commentsjsApp');
app.controller('MainCtrl', function ($scope,$http) {

    $http.jsonp('http://localhost:8501/feeds').success(function(data, status, headers, config){
    console.debug("Data : "+data+ "Status");
}).error(function(){
    console.debug("error");
});

编辑: 在网络选项卡(firebug)中,我可以看到GET具有200状态,响应为“Hello”。为什么我在控制台中收到错误呢?任何人都可以帮助我。

当我运行这个angularjs应用程序。控制台上的以下输出,如图像

所示

enter image description here

3 个答案:

答案 0 :(得分:1)

您正在请求JSONP数据,但服务器返回string。从服务器返回适当的JSON对象以解决问题。

注意Hello world无效JSON,但"Hello World"是。

答案 1 :(得分:1)

您需要添加标题&#39; Access-Control-Allow-Origin&#39;在响应中,因为您从localhost:9000调用localhost:8501(它们在技术上是不同的服务器)。

@RequestMapping(method = GET)
ResponseEntity<?> findAllFeeds(HttpServletRequest httpRequest,
        HttpServletResponse httpResponse) {

    httpResponse.addHeader("Access-Control-Allow-Origin",
            "http://127.0.0.1:9000");        

    return new ResponseEntity<String>("Hello", OK);
}

答案 2 :(得分:0)

有时Angular要求引用URL中的冒号,请尝试:

$http.get('http://localhost\\:8501/feeds').success(function(data, status, headers, config){
        console.debug("Data : "+data);
    }).error(function(){
        console.debug("error");
    });