[英]Angular http.get doesn't like text files with square brackets at beginning and end
我有一些Angular代码从S3获取文本文件,然后显示它,但如果文本文件的开头和结尾看起来像方括号内的标签,http调用会给出错误。 所以这是代码:
$http.get(url).success(function(data, status, headers, config) {
console.log("success " + data);
}).
error(function(data, status, headers, config) {
console.log("error");
});
然后生成错误的文件将是这样的:
[image: image1.png]
lispum iupsum oeri lispum iupsum oeri
[image: image1.png]
它让我感到烦恼,如果文件顶部或底部只有一个“标签”,就不会发生这种情况。 删除其中任何东西,即时工作。 任何人都知道为什么会这样或一个变通方法?
如果我在console.log中错误例程中的错误,数据,状态和标题都被设置为undefined。 我也得到了这个Angular错误:
SyntaxError: Unexpected token i
at Object.parse (native)
at oc (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:14:156)
at Yb (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:77:125)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:77:487
at s (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:7:302)
at Yc (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:77:469)
at c (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:79:109)
at https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:112:276
at l.$eval (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:126:84)
at l.$digest (https://ajax.googleapis.com/ajax/libs/angularjs/1.3.8/angular.min.js:123:195)
由于角度$http
服务正在尝试使用JSON模式匹配来解析您的数据,当它遇到来自服务器的流,该流以[
以#结尾]
,它会将其解释为JSON数组并尝试构建对象表示数据,这显然是不可能的。
您可以在$http.get()
构建自定义transformResponse
参数,以便以与传统解析器不同的方式处理数据。 这样的东西可能会起作用( 注意 :未经测试):
$http.get(url,
{
transformResponse: function(data){
//normally we would take the raw data here and do transformations on it,
//but in your situation, you don't want any transformations done.
return data;
}
}).success(function(data, status, headers, config) {
console.log("success " + data);
...
实际上,我们不是允许角度来解析数据,而是采用transformResponse
并确保数据保持原样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.