如何从JSON$http.get()请求中删除无效字符
How to strip invalid characters from a JSON $http.get() request?
我正在从一个不受控制的web服务中提取数据。结果包括名称中撇号前的反斜杠(如O’Donnell)。根据JSLint.com的说法,JSON的结构是有效的-,除非响应包含反斜杠撇号。
我已经通知了网络服务提供商。当我在等待ReallyBigCo的回复时,我想了解更多关于请求端可能发生的事情。
在发出$http.get()请求时,有没有办法从JSON对象中剥离字符
我一直在寻找将响应捕获为字符串的解决方案,以便去掉字符。但是,$http.get()函数一结束,我就收到一个错误。
此AngularJS代码运行良好(当JSON响应有效时):
var app = angular.module('app',[]);
app.factory('appresults', function($http) {
return {
getAsync: function(callback) {
var myURL = https://address-to-really-big-co-webservice.com;
$http.get(myURL).success(callback);
}
};
});
app.controller('appcontroller', function($scope, appresults) {
appresults.getAsync(function(results) {
$scope.appdata = results.findUsers;
});
});
当JSON有效时,我可以使用以下代码在页面中显示电子邮件列表:
<p ng-repeat="item in appdata">{{item.email}}</p>
下面是一个处理JSON结果的示例:
{"findUsers":[
{"email":"aaa.somebody@domain.com"},
{"email":"bbb.somebody@domain.com"},
{"email":"ccc.somebody@domain.com"}
]}
当这些JSON结果导致错误时:
{"findUsers":[
{"email":"aaa.somebody@domain.com"},
{"email":"bbb.somebody@domain.com"},
{"email":"ccc.somebody@domain.com"},
{"email":"ddd.o''somebody@domain.com"}
]}
带有撇号的结果在IE9的控制台中创建了以下错误:
SyntaxError:无效字符未定义
我一直在寻找重新格式化响应的解决方案,但任何带有撇号的JSON结果都会立即导致此错误。因此,除非我知道如何在错误发生之前对对象进行寻址,否则似乎不可能使用results.replace(/'/g,"");
这样的简单解决方案。
在将JSON转换为对象之前,您可以对响应进行自己的转换并"修复"数据(plnkr):
$scope.testOther = function() {
$http.get(url, {
transformResponse: function(data, headersGetter) {
// here data is the raw string, you can fix the data here
// replace first object property name "coord" with "FIXED"
data = data.replace("coord", "FIXED");
return angular.fromJson(data);
}
}).success(function(data) {
setValues(data);
});
};
相关文章:
- 如何请求确认删除检查表项目
- 删除 Facebook 应用上的请求
- 当请求时,我如何从文本区域删除null.GetAttribute为null,以及如何从servlet修改标签的可见性
- Node.js http代理删除websocket请求
- 正在删除配置文件请求
- 在删除视图时取消所有传出的REST HTTP请求
- 方法不允许 — 从 Angularjs 中的请求标头中删除 Access-Control-Request-Method
- 使用 ajax 请求删除文件
- YQL 从请求的页面中删除 标记中的数据
- 如何在调用服务器请求时删除错误
- 当我们使用 ajax post 请求上传文件时,如何取消将文件上传到服务器并删除文件(在上传未完成之间)
- 多次执行 AJAX 请求时删除以前的数据
- 如何在 angularjs 中删除请求对象中的文件
- 删除Facebook应用程序请求(使用javascript sdk)在用户被带到画布页面后
- 从请求 URL 中删除参数
- 如何删除浏览器在一次请求期间添加的所有 Cookie
- 如何获取删除请求参数
- 如何从JSON$http.get()请求中删除无效字符
- 在ajax请求删除后重新加载页面
- AJAX 请求(删除注释)