Angularjs删除JSON eval之前的响应数据行

Angularjs remove line of response data before JSON eval

本文关键字:响应 数据 删除 JSON eval Angularjs      更新时间:2023-09-26

我在使用Angularjs和jQuery这个特殊的REST API时遇到了一个严重的问题。我不是在相同的领域说的API,可以得到数据回来,但我得到一个"SyntaxError:无效标签"name":{"错误。

如果我要这样做$http。Get或$。我在10秒后得到一个暂停。但是,如果我对任何一个库使用json,我将在Firebug中看到数据在net选项卡中返回,但是我在控制台选项卡中得到上面的错误。在做了一些研究之后,我发现很多人对API(一个Jive产品)和这一行与JSON一起返回的特定文本有问题。响应看起来像这样:

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

最大的问题是第一个"throw"行。我已经尝试了很多方法来删除那条线,但我还没有找到合适的方法。我很抱歉不能提供代码示例,但如果有任何方法可以在Angularjs或jQuery中完成这项工作,我将接受它。我不知道答案是否在Angularjs的拦截器中,还是在transformResponse中。

如能提供任何帮助,我将不胜感激。

谢谢

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;
        }
      }
    })
}])

砰砰作响:http://plnkr.co/edit/6WCxcpmRKxIivl4yK4Fc?p=preview