繁体   English   中英

Angular http.get不喜欢开头和结尾带方括号的文本文件

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM