che*_*zer 15 parsing json http httpresponse angularjs
我的服务器中有一个"test.ini"文件,包含以下文本:
"[ALL_OFF]
[ALL_ON]
"
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过$http
服务获取此文件内容,这是我的功能的一部分:
var params = { url: 'test.ini'};
$http(params).then(
function (APIResponse)
{
deferred.resolve(APIResponse.data);
},
function (APIResponse)
{
deferred.reject(APIResponse);
});
Run Code Online (Sandbox Code Playgroud)
此操作有一个Angular异常(SyntaxError:Unexpected token 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;
}],
Run Code Online (Sandbox Code Playgroud)
我的问题:
如何强制角度不进行此检查(if (JSON_START.test(data) && JSON_END.test(data))
)并且不解析对JSON的文本响应?
Seb*_*rth 42
您可以通过以下方式覆盖默认值:
$http({
url: '...',
method: 'GET',
transformResponse: [function (data) {
// Do whatever you want!
return data;
}]
});
Run Code Online (Sandbox Code Playgroud)
上面的函数替换了您为此HTTP请求提供的默认函数.
或者读此,他们写的"改变默认的转换每请求".
您还可以强制角度将响应视为纯文本而不是JSON:
$http({
url: '...',
method: 'GET',
responseType: 'text'
});
Run Code Online (Sandbox Code Playgroud)
这将确保Angular不会尝试自动检测内容类型.
归档时间: |
|
查看次数: |
20722 次 |
最近记录: |