从URL获取JSON时,只有在数据有效时我才想处理它。
到目前为止,我的方法是使用JSON:
然而,在我进行解析之前,Angular本身已经失败了。
语法错误:意外的令牌{ 位于Object.parse (native) 在fromJson(http://code.angularjs.org/1.2.0-rc.2/angular.js:908:14) 在$HttpProvider.defaults.defaults.transformResponse(http://code.angularjs.org/1.2.0-rc.2/angular.js:5735:18) 在http://code.angularjs.org/1.2.0-rc.2/angular.js:5710:12 在Array.forEach (native) 在forEach(http://code.angularjs.org/1.2.0-rc.2/angular.js:224:11) 在transformData(http://code.angularjs.org/1.2.0-rc.2/angular.js:5709:3) 在transformResponse(http://code.angularjs.org/1.2.0-rc.2/angular.js:6328:17) 在wrappedCallback(http://code.angularjs.org/1.2.0-rc.2/angular.js:9106:81) 在http://code.angularjs.org/1.2.0-rc.2/angular.js:9192:26 angular.js:7861
如何防止Angular抛出此错误或者我应该如何处理验证JSON?
更新:解决方案:
到目前为止,我的方法是使用JSON:
$http.get(
'data/mydata.json'
+ "?rand=" + Math.random() * 10000,
{cache: false}
)
.then(function (result) {
try {
var jsonObject = JSON.parse(JSON.stringify(result.data)); // verify that json is valid
console.log(jsonObject)
}
catch (e) {
console.log(e) // gets called when parse didn't work
}
})
然而,在我进行解析之前,Angular本身已经失败了。
语法错误:意外的令牌{ 位于Object.parse (native) 在fromJson(http://code.angularjs.org/1.2.0-rc.2/angular.js:908:14) 在$HttpProvider.defaults.defaults.transformResponse(http://code.angularjs.org/1.2.0-rc.2/angular.js:5735:18) 在http://code.angularjs.org/1.2.0-rc.2/angular.js:5710:12 在Array.forEach (native) 在forEach(http://code.angularjs.org/1.2.0-rc.2/angular.js:224:11) 在transformData(http://code.angularjs.org/1.2.0-rc.2/angular.js:5709:3) 在transformResponse(http://code.angularjs.org/1.2.0-rc.2/angular.js:6328:17) 在wrappedCallback(http://code.angularjs.org/1.2.0-rc.2/angular.js:9106:81) 在http://code.angularjs.org/1.2.0-rc.2/angular.js:9192:26 angular.js:7861
如何防止Angular抛出此错误或者我应该如何处理验证JSON?
更新:解决方案:
$http.get(
// url:
'data/mydata.json'
+ "?rand=" + Math.random() * 10000
,
// config:
{
cache: false,
transformResponse: function (data, headersGetter) {
try {
var jsonObject = JSON.parse(data); // verify that json is valid
return jsonObject;
}
catch (e) {
console.log("did not receive a valid Json: " + e)
}
return {};
}
}
)
result.data
?或者更好的是Plunker。 - Maxim Shoustin