1

我正在尝试将 JSONP 与 Restangular 一起使用。我正在使用 Songkick API,在发出 GET 请求时,我没有收到来自不同域的响应数据,但在本地我收到数据没有问题。

我创建了以下工厂来配置 Restangular 和控制器。我有点不确定如何使用 setDefaultRequestParams。也许配置不正确?

angular
    .module('ModuleName')
    .factory('RestFactory', Factory);

function Factory (Restangular) {
    var factory = {
        songkick: songkick
    };

    return factory;

    function songkick () {
        return Restangular.withConfig(function(RestangularConfigurer) {
            RestangularConfigurer.setJsonp = true;
            RestangularConfigurer.setDefaultRequestParams('jsonp', {
                callback: 'JSON_CALLBACK'
            });

            RestangularConfigurer.setDefaultRequestParams('get', {
                reason: 'attendance',
                apikey: 'xxxxxxxxxx'
            });

            RestangularConfigurer.setBaseUrl('http://api.songkick.com/api/3.0/');
            RestangularConfigurer.setRequestSuffix('.json');
            RestangularConfigurer.setDefaultHttpFields({cache: true});
        });
    }

}


angular
    .module('ModuleName')
    .controller('UserController', Controller);

function Controller ($stateParams, RestFactory) {
    var user = this;

    activate();

    function activate () {
        RestFactory.songkick().one('users/'+$stateParams.username+'/calendar')
            .get()
            .catch(function(response){
                console.log("Error with status code", response.status);
            });
    }

}
4

1 回答 1

4

您是否错过了 Restangular 的 JSONP 选项设置?类似于以下内容:

//JSonp
RestangularProvider.setJsonp(true);
RestangularProvider.setDefaultRequestParams('jsonp', {callback: 'JSON_CALLBACK'});

记录在这里

于 2015-08-17T08:36:53.157 回答