我在使用这个特殊的REST API时遇到了Angularjs和jQuery的严重问题。我与所述API不在同一个域中,并且可以获取数据,但是我收到“SyntaxError:invalid label”name“:{”error。
如果我要做$ http.get或$ .get之类的事情,我会在10秒后得到超时。但是,如果我在任一库中使用jsonp,我将在Firebug中看到数据在网络选项卡中返回,但是我在控制台选项卡中收到上述错误。在做了一些研究之后,我看到很多人对API(一个Jive产品)以及与JSON一起返回的这一特定文本行有问题。响应看起来像这样:
throw 'allowIllegalResourceCall is false.';
{"name":{ "givenName": "xxx"}}
最大的问题是第一条“抛出”线。我已经尝试了一些方法来删除该行,但我没有找到正确的方法来做到这一点。我为无法提供代码示例而道歉,但如果有任何方法可以在Angularjs或jQuery中使用它,我会接受它。我不知道答案是在Angularjs拦截器还是transformResponse。
我们将不胜感激。
谢谢
答案 0 :(得分: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;
}
}
})
}])