Angular$http服务-强制不解析对JSON的响应
我的服务器中有一个“test.ini”文件,包含以下文本: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
"[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'
});