Web サイトから JSON データを取得するサービスを AngularJS で作成しようとしています。以下に示すように、サービスをファクトリメソッドでラップしました
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/
これを解決する方法について何か考えがありますか?
編集:データを取得して問題を解決しました。サザのおかげで
以下は、誰かが興味を持っている場合に使用したコードです
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'];
});
ここでの主な違いは、jsonp
それ以外の URL パラメーターのコールバックです。すべてがうまく機能します。