我有一个在端口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应用程序。控制台上的以下输出,如图像
所示
答案 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");
});