一尘不染

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

angularjs

我的服务器中有一个“ 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:意外令牌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;
    }],

我的问题:

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


阅读 325

收藏
2020-07-04

共1个答案

一尘不染

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

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

上面的函数替换了您为该HTTP请求设置的默认函数。

或者读,他们写的“改变默认的转换每请求”。

2020-07-04