我的服务器中有一个“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 异常(语法错误:意外的标记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的文本响应?
2条答案
按热度按时间mrwjdhj31#
您可以通过以下方式覆盖默认值:
上面的函数替换了您为此HTTP请求发布的默认函数。
或者阅读this,他们在那里写了“覆盖每个请求的默认转换”。
wwodge7n2#
您还可以强制angular将响应视为纯文本而不是JSON:
这将确保Angular不会尝试自动检测内容类型。