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

Angular$http服务-强制不解析对JSON的响应,json,angularjs,parsing,http,httpresponse,Json,Angularjs,Parsing,Http,Httpresponse,我的服务器中有一个“test.ini”文件,包含以下文本: "[ALL_OFF] [ALL_ON] " 我试图通过$http服务获取此文件内容,以下是我的部分功能: var params = { url: 'test.ini'}; $http(params).then( function (APIResponse) { deferred.resolve(APIRespons

我的服务器中有一个“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);
                   });
此操作获得角度异常(SyntaxError:意外标记A)。
我打开Angular框架文件,找到了exeption:
因为文本文件内容以“[”开头,以“]”结尾,所以“思考”这是一个JSON文件

这是角度代码(1.2.23版中的第7474行):

我的问题:


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

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

$http({
  url: '...',
  method: 'GET',
  transformResponse: [function (data) {
      // Do whatever you want!
      return data;
  }]
});
上面的函数将替换此HTTP请求的默认postet函数


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

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

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

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

让服务器返回带有
text/plain
的文件,然后它将正常工作,或者干脆
transformResponse:undefined
不进行转换。@dfsq这是我寻找的答案-“transformResponse:undefined”,谢谢!它不起作用,因为响应头中的
内容类型
错误(可能是
应用程序/json
)。事实上,如果服务器提供了正确的
内容类型
,则无需在配置中添加
响应类型:“text”
,angular将尊重这一点。@AlirezaMirian确实如此。在Angular中添加它的唯一原因是,如果服务器没有提供
内容类型
,它就不会尝试将其解析为JSON。
$http({
    url: '...',
    method: 'GET',
    responseType: 'text'
});