Angularjs JSON EVAL之前删除响应数据的线(Angularjs remove lin

2019-10-23 06:11发布

我有这个特殊的REST API与Angularjs和jQuery一个严重的问题。 我不是在同一个域中说的API,并且可以取回数据,但是我得到一个“语法错误:无效的标签‘名’:{”错误。

如果我做这样的事情$ http.get或$不用彷徨,我收到了超时10秒后。 不过,如果我使用JSONP与任一图书馆,我会在Firebug的数据在网络选项卡返回看到,但是我得到上面的控制台选项卡中的错误。 之后做一些研究,我看到过很多这样的具有与该API(一个牛仔产品),并与该JSON一起返回文本的这个具体问题行的人。 响应看起来是这样的:

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

最大的问题是第一个“扔”行。 我已经尝试了一堆的方式删除了这一行,但我还没有找到正确的方法来做到这一点。 我不能够提供一个代码示例道歉,但如果有什么办法让在Angularjs或jQuery的这项工作,我会抓住。 我不知道答案就在Angularjs拦截器,或transformResponse。

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

谢谢

Answer 1:

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



文章来源: Angularjs remove line of response data before JSON eval