我正在构建一个AngularJS应用程序,该应用程序调用从数据库获取数据的NodeJS服务器。 NodeJS返回JSON.stringify(someArrayWithData)。
这是AngularJS代码:
$scope.getMainGroups = function(){
$http.jsonp("http://127.0.0.1:3000/get/MainGroups?callback=JSON_CALLBACK").success(function(data, status, headers, config) {
$scope.MainGroups = data;
}).error(function(data, status, headers, config) {
$scope.MainGroups = status;
});
};
$ scope.MainGroups转向.error而不是成功,即使我可以在chrome调试器中看到结果返回(200 ok)。
我错过了什么?
答案 0 :(得分:6)
您必须在服务器端返回有效的JSON响应。 200 OK只是注入DOM的GET请求。我敢打赌,你没有从服务器返回一个有效的JSON响应和正确的响应代码。
以下是如何在服务器端构建响应的示例(PHP): Simple jQuery, PHP and JSONP example?
答案 1 :(得分:0)
回答here时,您需要更改NodeJS响应。 JSONP答案需要从AngularJS在URL中添加的确切文本开始(例如'angular.callbacks._1')。
// changes in your server script used by NodeJS
// Required for JSONP calls, 'callback' matches the '?callback=JSON_CALLBACK'
app.set('jsonp callback name', 'callback');
// ... in your response change json to jsonp
res.jsonp(votes);
执行这些更改后,当服务器在参数中检测到“回调”时,答案如下:
/ ** / typeof angular.callbacks._1 ==='function'&& angular.callbacks._1([{“votes”:3,“title”:“new topic”等...
现在是的,AngularJS正确回调'成功'功能。