AngularJS http.obtenez de vérifier json valide
Lors de l'obtention d'un json à partir d'une URL je veux seulement travailler avec elle, lorsque les données sont valides.
mon approche à ce jour en utilisant 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
}
})
Cependant avant que je puisse en faire l'analyse, angulaire déjà ne parvient pas lui-même
SyntaxError: Unexpected token {
à l'Objet.parse (native)
au fromJson (http://code.angularjs.org/1.2.0-rc.2/angular.js:908:14)
à $HttpProvider.les valeurs par défaut.les valeurs par défaut.transformResponse (http://code.angularjs.org/1.2.0-rc.2/angular.js:5735:18)
au http://code.angularjs.org/1.2.0-rc.2/angular.js:5710:12
au Tableau.forEach (native)
au forEach (http://code.angularjs.org/1.2.0-rc.2/angular.js:224:11)
au transformData (http://code.angularjs.org/1.2.0-rc.2/angular.js:5709:3)
au transformResponse (http://code.angularjs.org/1.2.0-rc.2/angular.js:6328:17)
au wrappedCallback (http://code.angularjs.org/1.2.0-rc.2/angular.js:9106:81)
au http://code.angularjs.org/1.2.0-rc.2/angular.js:9192:26 angulaire.js:7861
Comment puis-je empêcher angulaire de jeter cette erreur ou sinon, comment dois-je gérer la vérification de l'JSON ?
Mise à JOUR: Solution:
$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
? ou mieux Plunkerj'ai le même problème. il a commencé à se produire sur l'une des valeurs retournés. la question est de savoir pourquoi le json devenir invalide? ne pas le serveur de coder correctement?
OriginalL'auteur IHeartAndroid | 2013-10-17
Vous devez vous connecter pour publier un commentaire.
Vous pouvez remplacer
transformResponse
dans $http. Cochez cette autre réponse.OriginalL'auteur Laurent Perrin
Je cherchais la même chose, et transformResponse fait le travail, MAIS, je n'aime pas l'aide de transformResponse chaque fois que j'utilise $http.get() ou même primordial parce que quelques $http.get() sera json et d'autres non.
Donc, voici ma solution:
OriginalL'auteur Daniel Sánchez