8 votes

Comment puis-je attraper les erreurs d'analyse JSON en JQuery ?

Dans le code suivant, si le JSON que j'essaie de lire contient une erreur de syntaxe quelque part, alors il ne dit tout simplement rien, je ne peux pas trouver d'erreur affichée dans Chrome ou Firefox qui me dit qu'il ne peut pas analyser le champ JSON. Même ce try/catch ne fonctionne pas.

Comment puis-je faire en sorte que mon code fasse quelque chose de spécifique si le JSON ne peut pas être analysé?

function init() {
    elemFront = $('div.flashcard div.bodyFront');
    elemBack = $('div.flashcard div.bodyBack');
    console.log('before');
    try {
        console.log('inside try');
        $.getJSON('data.txt', function(jsonResult) {
            console.log(jsonResult);
        });
    } 
    catch(err) {
        console.log('error');
    }
    console.log('after');
}

Addendum

Merci @sagi, cela a fonctionné, voici le code qui capture les problèmes de syntaxe avec les données JSON :

$.get('data.txt', {}, function(data, response){
    var jsonResult;
    try {
        jsonResult = JSON.parse(data);
    }
    catch (e) {
        $('div.header').html('ne peut pas charger les données car: "'+e+'"');
    };
    $('div.bodyFront').html(jsonResult['one']);
});

14voto

Sagish Points 602

Si vous n'êtes pas sûr de la réponse, vous ne devriez pas utiliser $.getJSON, à la place vous pourriez vouloir faire quelque chose comme ceci

$.get('...', {}, function(data, response){
  var jsonResult;
  try {
    jsonResult = JSON.parse(data);
  }
  catch (e) {
    console.log("erreur: "+e);
  };
  // le reste de votre code
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X