327 votes

erreur de syntaxe inattendue jeton U JSON

J'obtiens cette erreur "uncaught syntaxerror unexpected token U" lorsque je lance ma page dans chrome. Et dans firefox, j'obtiens "JSON.parse : unexpected character". Je renvoie les données json à partir d'un fichier php et la chaîne json renvoyée est valide. Je l'ai vérifié avec http://jsonlint.com/ . Toute aide serait appréciée... Merci.

Voici la chaîne JSON renvoyée

[
    ["1","Pan Africa Market","\"1521 1st Ave, Seattle, WA\"","47.608941","-122.340145","restaurant"],
    ["2","The Melting Pot","14 Mercer St, Seattle, WA","47.624562","-122.356442","restaurant"],
    ["3","Ipanema Grill","1225 1st Ave, Seattle, WA","47.606366","-122.337656","restaurant"],
    ["4","Sake House","230 1st Ave, Seattle, WA","47.612825","-122.34567","bar"],
    ["5","Crab Pot","1301 Alaskan Way, Seattle, WA","47.605961","-122.34036","restaurant"],
    ["6","Mexican Kitchen","2234 2nd Ave, Seattle,WA","47.613975","-122.345467","bar"],
    ["7","Wingdome","1416 E Olive Way, Seattle, WA","47.617215","-122.326584","bar"],
    ["8","Piroshky Piroshky","1908 Pike pl, Seattle, WA","47.610127","-122.342838","restaurant"]
]

0 votes

Pouvez-vous afficher le JSON ? Lorsque j'obtiens cette erreur, cela signifie généralement qu'il y a une chaîne non terminée - elle indique qu'elle se trouve à la lettre 'U' dans le JSON.

0 votes

Il pourrait y avoir un problème étrange avec le \" dans la sortie.

0 votes

Ce JSON est bien analysé. Vous devriez essayer de comprendre ce qui bloque votre code.

3voto

SD1985 Points 66

J'ai rencontré cette erreur lorsque j'ai exécuté une condition de recherche sur un JSONArray dans une boucle for. Le problème auquel j'ai été confronté était le résultat de l'une des valeurs de la boucle for qui retournait null. Par conséquent, lorsque j'ai essayé d'accéder à une propriété de cette valeur, j'ai échoué.

Donc, si vous faites quelque chose dans JSONArrays où vous n'êtes pas sûr de la source de données et de son intégrité, je pense que c'est une bonne habitude de traiter les exceptions null et undefined dans ce cas.

Je l'ai corrigé en vérifiant que la valeur retournée par find sur le JSONArray n'est pas nulle et en traitant les exceptions de manière appropriée.

J'ai pensé que ça pourrait aider.

3voto

Est si simple de résoudre cette erreur.

La cause . Javascript donne cette erreur parce que vous interprétez une chaîne, un objet ou un tableau vide.

Résolution Pour résoudre ce problème, il suffit de vérifier si la chaîne que vous essayez d'analyser est vide/nulle ou non. Si elle n'est pas vide/nulle, vous pouvez analyser cette chaîne.

let ParsedString;

if(yourString != null){
   ParsedString = JSON.parse(yourString);
}

1voto

delliottg Points 791

Dans mon cas, il essayait d'appeler JSON.parse() sur une variable AJAX avant que la réponse XHRResponse ne revienne. EG :

var response = $.get(URL that returns a valid JSON string);
var data = JSON.parse(response.responseText);

Je l'ai remplacé par un exemple tiré du Site jQuery pour $.get :

<script type="text/javascript"> 
    var jqxhr = $.get( "https://jira.atlassian.com/rest/api/2/project", function() {
          alert( "success" );
        })
          .done(function() {
//insert code to assign the projects from Jira to a div.
                jqxhr = jqxhr.responseJSON;
                console.log(jqxhr);
                var div = document.getElementById("products");
                for (i = 0; i < jqxhr.length; i++) {
                    console.log(jqxhr[i].name);
                    div.innerHTML += "<b>Product: " + jqxhr[i].name + "</b><BR/>Key: " + jqxhr[i].key + "<BR/>";
                }
                console.log(div);
            alert( "second success" );
          })
          .fail(function() {
            alert( "error" );
          })
          .always(function() {
            alert( "finished" );
          });

        // Perform other work here ...

        // Set another completion function for the request above
        jqxhr.always(function() {
          alert( "second finished" );
        });
</script>

1voto

Nancy256 Points 43

Eh bien, à tous ceux qui ne trouvent pas l'erreur dans leur code, ni "undefined as it says in local storage nor null"... il suffit de commenter votre code et d'en écrire un autre qui supprime effectivement l'élément dans le stockage local... après cela, vous pouvez commenter ou supprimer le code actuel et réinitialiser à nouveau le précédent en le décommentant simplement (si vous n'avez pas supprimé... si vous l'avez fait, vous pouvez l'écrire à nouveau :))

LocalStorage.setItem('Previous' , "removeprevious");  

LocalStorage.removeItem('Previous');   
 Console.log(LocalStorage.getItem('Previous'));

La console affichera null et c'est tout réinitialisez votre code à nouveau si ça ne marche pas, mec!vous avez des erreurs.

Désolé pour mon anglais !

1voto

Kushal Parikh Points 371

Cette réponse peut être une solution possible parmi d'autres. Cette réponse s'adresse aux personnes qui sont confrontées à cette erreur lorsqu'elles travaillent avec l'application Téléchargement de fichiers ..

Nous utilisions un intergiciel pour le cryptage et le décryptage à base de jetons et nous avons rencontré la même erreur.

Voici notre code dans le fichier route :

  router.route("/uploadVideoMessage")
  .post(
    middleware.checkToken,
    upload.single("video_file"),
    videoMessageController.uploadVideoMessage
  );

ici nous appelions le middleware avant la fonction de téléchargement et cela causait l'erreur. Donc quand on l'a changé en ceci, ça a marché.

router.route("/uploadVideoMessage")
  .post(
    upload.single("video_file"),
    middleware.checkToken,
    videoMessageController.uploadVideoMessage
  );

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