我的服务器中有一个“ test.ini”文件,包含以下文本:
"[ALL_OFF] [ALL_ON] "
我正在尝试通过$http服务获取此文件的内容,这是我的功能的一部分:
$http
var params = { url: 'test.ini'}; $http(params).then( function (APIResponse) { deferred.resolve(APIResponse.data); }, function (APIResponse) { deferred.reject(APIResponse); });
此操作收到了一个Angular异常(SyntaxError:意外令牌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的文本响应?
if (JSON_START.test(data) && JSON_END.test(data))
您可以通过以下方法覆盖默认值:
$http({ url: '...', method: 'GET', transformResponse: [function (data) { // Do whatever you want! return data; }] });
上面的函数替换了您为该HTTP请求设置的默认函数。
或者读此,他们写的“改变默认的转换每请求”。