我有这个特殊的REST API与Angularjs和jQuery一个严重的问题。 我不是在同一个域中说的API,并且可以取回数据,但是我得到一个“语法错误:无效的标签‘名’:{”错误。
如果我做这样的事情$ http.get或$不用彷徨,我收到了超时10秒后。 不过,如果我使用JSONP与任一图书馆,我会在Firebug的数据在网络选项卡返回看到,但是我得到上面的控制台选项卡中的错误。 之后做一些研究,我看到过很多这样的具有与该API(一个牛仔产品),并与该JSON一起返回文本的这个具体问题行的人。 响应看起来是这样的:
throw 'allowIllegalResourceCall is false.';
{"name":{ "givenName": "xxx"}}
最大的问题是第一个“扔”行。 我已经尝试了一堆的方式删除了这一行,但我还没有找到正确的方法来做到这一点。 我不能够提供一个代码示例道歉,但如果有什么办法让在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;
}
}
})
}])
Plunker: http://plnkr.co/edit/6WCxcpmRKxIivl4yK4Fc?p=preview