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 异常(语法错误:意外的标记 A)。
我打开了 Angular 框架文件,我发现了异常:
因为文本文件内容以“[”开头,以“]”结尾,所以Angular"think"是一个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))
) 和 not 解析对 JSON?
的文本响应
您可以通过以下方式覆盖默认值:
$http({
url: '...',
method: 'GET',
transformResponse: [function (data) {
// Do whatever you want!
return data;
}]
});
上面的函数替换了您为这个 HTTP 请求设置的默认函数。
或阅读 this 他们写 "Overriding the Default Transformations Per Request" 的地方。
您还可以强制 angular 将响应视为纯文本而不是 JSON:
$http({
url: '...',
method: 'GET',
responseType: 'text'
});
这将确保 Angular 不会尝试自动检测内容类型。
我的服务器中有一个 "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"think"是一个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))
) 和 not 解析对 JSON?
您可以通过以下方式覆盖默认值:
$http({
url: '...',
method: 'GET',
transformResponse: [function (data) {
// Do whatever you want!
return data;
}]
});
上面的函数替换了您为这个 HTTP 请求设置的默认函数。
或阅读 this 他们写 "Overriding the Default Transformations Per Request" 的地方。
您还可以强制 angular 将响应视为纯文本而不是 JSON:
$http({
url: '...',
method: 'GET',
responseType: 'text'
});
这将确保 Angular 不会尝试自动检测内容类型。