繁体   English   中英

Angular $http 服务 - 强制不解析对 JSON 的响应

[英]Angular $http service - force not parsing response to JSON

我的服务器中有一个“test.ini”文件,包含以下文本:

"[ALL_OFF]
 [ALL_ON]
"

我正在尝试通过$http服务获取此文件内容,这是我的功能的一部分:

  var params = { url: 'test.ini'};
 $http(params).then(
                 function (APIResponse)
                   {
                     deferred.resolve(APIResponse.data);
                   },
                    function (APIResponse)
                   {
                     deferred.reject(APIResponse);
                   });

此操作出现 Angular 异常(SyntaxError: Unexpected token A)。
我打开了 Angular 框架文件,发现了异常:
因为文本文件内容以“ [ ”开头并以“ ] ”结尾,Angular“认为”这是一个 JSON 文件。

这是 Angular 代码( 1.2.23 版本中的第 7474 行):

 var defaults = this.defaults = {
    // transform incoming response data
    transformResponse: [function(data) {
      if (isString(data)) {
        // strip json vulnerability protection prefix
        data = data.replace(PROTECTION_PREFIX, '');
        if (JSON_START.test(data) && JSON_END.test(data))
          data = fromJson(data);
      }
      return data;
    }],

我的问题:

如何强制角度进行此检查( if (JSON_START.test(data) && JSON_END.test(data)) )并且解析对 JSON 的文本响应?

您可以通过以下方式覆盖默认值:

$http({
  url: '...',
  method: 'GET',
  transformResponse: [function (data) {
      // Do whatever you want!
      return data;
  }]
});

上面的函数替换了您为此 HTTP 请求发布的默认函数。

或者阅读他们写“覆盖每个请求的默认转换”的地方。

您还可以强制 Angular 将响应视为纯文本而不是 JSON:

$http({
    url: '...',
    method: 'GET',
    responseType: 'text'
});

这将确保 Angular 不会尝试自动检测内容类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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