2013-07-27 18 views
1

当我在AngularJS应用程序中实例化下面的代码时,我在transformResponse函数(代码底部)中得到了奇怪的数据。我没有从任何控制器调用$ resource函数,只是在浏览器中加载脚本。当加载应用程序时,数据变量(请参阅代码)包含当前部分的HTML

这看起来很奇怪。这是它应该的方式吗?

var buddyServices = angular 
.module('buddyServices', ['ng','ngResource']) 
.factory('Buddy', 
    function ($resource) { console.log('resource'); 
     return $resource('http://webservice.buddyplatform.com/v1/:service', 
      {service:'', BuddyApplicationName: 'xxx', 
      BuddyApplicationPassword: 'yyy'} 
     ); 
    } 
) 
.config(function($httpProvider){ 
    delete $httpProvider.defaults.headers.common['X-Requested-With']; 
    $httpProvider.defaults.transformResponse = function(data) { 
     console.log(data); 
     return 'TEST: '+data; 
    }; 
}); 

===编辑===

这对我只是吓倒:$ httpProvider处理所有 http请求,所以页面加载是其中之一。我现在猜测了一下,但似乎很可能。那么,问题就变成了:是否有一种“简单”的方法来将上述代码中的数据限制为仅由我的服务执行的请求?

回答

1

transformResponse需要另一个参数headersGetter。您可以使用它来获取标题与响应一起发送。寻找Content-Type标题标题。它应该包含application/json

+0

虽然我没有在标题之后。我在响应*数据*之后。在某些情况下,我希望能够保持原样。我只想在我打电话给我的功能时发生这种情况。 –

+0

头部Content-type可用于区分html内容,json内容或xml内容。如果服务调用正在返回json数据或xml数据,则可以很好地为内容类型设置一个过滤器,因为html partials会返回content-type text/html – Chandermani