【发布时间】:2025-12-28 11:05:09
【问题描述】:
我正在尝试在 AngularJS 中创建一个服务,该服务会从网站获取我的 JSON 数据。 我将服务包装在工厂方法中,如下所示
App.factory('httpService', function($http) {
delete $http.defaults.headers.common['X-Requested-With'];
return {
getData : function() {
var url = "http://www.reddit.com/.json?callback=JSON_CALLBACK";
return $http.jsonp(url).then(
function(result) {
return result;
});
}
}
});
我遇到的问题是收到错误Uncaught SyntaxError: Unexpected token :。当我使用 get() 而不是 json() 时,我收到 501/CORS 错误。
我试图从中获取数据的 URL 是: http://api.4chan.org/b/1.json http://www.reddit.com/.json
以下是我的 jsfiddle 的链接以及其余代码。
http://jsfiddle.net/fatgamer85/adPue/3/
有人知道如何解决这个问题吗?
编辑:我已设法获取数据并解决了问题。感谢 sza
以下是我用过的代码,如果有人感兴趣的话
var myApp = angular.module("client", []);
myApp.factory('myXHRService', function($http) {
delete $http.defaults.headers.common['X-Requested-With'];
return {
getData : function(url) {
return $http.jsonp(url).then(
function(result) {
return result.data;
}
);
}
}
});
myApp.controller('MainCtrl', function($scope, myXHRService) {
$scope.xhrData = {};
$scope.data = {};
$scope.url = "http://www.reddit.com/.json?jsonp=JSON_CALLBACK";
myXHRService.getData($scope.url).then(function(data) {
var xhrData = angular.fromJson(data);
$scope.xhrData = xhrData.data.children;
});
});
myApp.config(function($httpProvider){
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
});
这里的主要区别是URL参数jsonp中的回调除此之外,一切正常且花花公子。
【问题讨论】:
标签: javascript api angularjs jsonp reddit