3

我在 AngularJS 中定义了以下 2 个服务。两者都应该返回 JSONP,因为我正在执行跨域请求。

服务一:

angular.module('ServiceA', ['ngResource']).
  factory('A', function ($resource) {
     return $resource('url/offers', {},
       {
         get: { method: 'JSONP', params: {property_code: 'DEMO_ERFOLGX', adults: '2',
                callback: 'JSON_CALLBACK'} }
       }
    );
  });

服务乙:

angular.module('ServiceB', ['ngResource']).
  factory('B', function ($resource) {
     return $resource('url/search.json', {},
       {
         get: { method: 'JSONP', params: {property_code: 'DEMO_ERFOLGX', adults: '2',
                callback: 'JSON_CALLBACK'} }
       }
    );
  });

在我的控制器中,我将结果绑定到我的范围:

$scope.foo = A.get();  
$scope.bar = B.get();

根据我的 console.log() 输出,B 返回 JSON 格式的预期结果,而 A 返回类似:

SyntaxError: invalid label
{"DEMO_ERFOLGX":{"offers":[{"checkin":"2012-12-01","checkout"

我错过了什么吗?为了从 A 接收正确的 JSON,我需要做什么?

4

1 回答 1

12

您的代码看起来令人困惑。这两个服务都称为 A,但您使用不同的模块名称。除此之外,您的第二个服务调用 JSON 文件而第一个不调用是否重要?

我会尝试以下方法:

angular.module('app.services', ['ngResource'])
  .factory('ServiceA', function ($resource) {
     return $resource('url/offers', {},
       {
         get: { method: 'JSONP', params: {property_code: 'DEMO_ERFOLGX', adults: '2',
                callback: 'JSON_CALLBACK'} }
       }
    );
  });
  .factory('ServiceB', function ($resource) {
     return $resource('url/search.json', {},
       {
         get: { method: 'JSONP', params: {property_code: 'DEMO_ERFOLGX', adults: '2',
                callback: 'JSON_CALLBACK'} }
       }
    );
  });
于 2012-11-05T16:23:04.303 回答