1

我在使用这个特定的 REST API 时遇到了 Angularjs 和 jQuery 的严重问题。我与所述 API 不在同一个域中,并且可以取回数据,但是我收到“SyntaxError: invalid label "name" :{" 错误。

如果我要执行 $http.get 或 $.get 之类的操作,我会在 10 秒后超时。但是,如果我将 jsonp 与任一库一起使用,我将在 Firebug 中看到数据在 net 选项卡中返回,但是我在控制台选项卡中收到上述错误。在做了一些研究之后,我看到很多人对 API(一个 Jive 产品)以及与 JSON 一起返回的特定文本行有问题。响应看起来像这样:

throw 'allowIllegalResourceCall is false.';
{"name":{ "givenName": "xxx"}}

最大的问题是第一条“投掷”线。我已经尝试了很多方法来删除该行,但我还没有找到正确的方法来做到这一点。对于无法提供代码示例,我深表歉意,但如果有任何方法可以在 Angularjs 或 jQuery 中完成这项工作,我会接受的。我不知道答案是在 Angularjs 拦截器中,还是在 transformResponse 中。

可以提供的任何帮助将不胜感激。

谢谢

4

1 回答 1

2

AngularJs 允许您定义转换 http 响应数据的方法(因此您可以删除响应数据的第一行)。您可以为单个请求执行此操作,也可以添加 httpInterceptor。

单个请求:

$http.get('...', {
    transformResponse: $http.defaults.transformResponse.unshift(function(data) {
        // Remove first line of response
        data.split("\n").slice(1).join("\n")
    }
});

HttpInterceptor

.config(['$httpProvider', function($httpProvider) {
    $httpProvider.interceptors.push(function() {
      return {
        'request': function(config) {
          config.transformResponse.unshift(function(data) {
            return data.split("\n").slice(1).join("\n")
          })
          return config;
        }
      }
    })
}])

Plunker:http ://plnkr.co/edit/6WCxcpmRKxIivl4yK4Fc?p=preview

于 2015-05-30T17:49:27.647 回答