1

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 パラメーターのコールバックです。すべてがうまく機能します。

4

1 に答える 1

0

Reddit.com の API エンドポイントの問題に関連しているのではないかと思います。この API を試すと、jsonp を使用して動作します

var url = "http://www.reddit.com/top.json?jsonp=JSON_CALLBACK";

API については/.json、サーバー側のコードを実装してデータを取得することをお勧めしますが、有効な JSON を返しますが、ドメイン全体で正しくアクセスできません。

于 2013-08-10T02:11:21.810 に答える