Je rencontre un problème d’analyse de chaînes JSON simples. Je les ai vérifiés sur JSONLint et cela indique qu'ils sont valides. Mais quand j'essaie de les analyser en utilisant soit JSON.parse
ou l'alternative jQuery, cela me donne l'erreur unexpected token o
:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
var ques_list = JSON.parse(cur_ques_details);
document.write(ques_list['ques_title']);
</script>
</body>
</html>
Note: J'encode mes chaînes en utilisant json_encode()
en PHP.
Vos données sont déjà un objet. Pas besoin de l'analyser. L'interpréteur javascript l'a déjà analysé pour vous.
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
Essayez d'analyser si:
var yourval = jQuery.parseJSON(JSON.stringify(data));
Utiliser JSON.stringify(data);
:
$.ajax({
url: ...
success:function(data){
JSON.stringify(data); //to string
alert(data.you_value); //to view you pop up
}
});
cur_ques_details
est déjà un objet JS, vous n'avez pas besoin de l'analyser
Toutefois, la source de votre erreur est que vous devez placer la chaîne JSON complète entre guillemets. Ce qui suit va réparer votre échantillon:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details ='{"ques_id":"15","ques_title":"jlkjlkjlkjljl"}';
var ques_list = JSON.parse(cur_ques_details);
document.write(ques_list['ques_title']);
</script>
</body>
</html>
Comme l'ont mentionné d'autres personnes interrogées, l'objet est déjà analysé dans un objet JS, vous n'avez donc pas besoin de l'analyser. Pour montrer comment accomplir la même chose sans analyser, vous pouvez procéder comme suit:
<!doctype HTML>
<html>
<head>
</head>
<body>
<script type="text/javascript">
var cur_ques_details ={"ques_id":"15","ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details.ques_title);
</script>
</body>
</html>
La réponse est déjà analysée, vous n'avez pas besoin de l'analyser à nouveau. si vous le ré-analysez à nouveau, vous obtiendrez "unexpected token o
". si vous avez besoin de l’obtenir sous forme de chaîne, vous pouvez utiliser JSON.stringify()
J'ai eu le même problème lorsque j'ai soumis des données à l'aide de jQuery AJAX:
$.ajax({
url:...
success:function(data){
//server response's data is JSON
//I use jQuery's parseJSON method
$.parseJSON(data);//it's ERROR
}
});
Si la réponse est JSON et que vous utilisez cette méthode, les données que vous obtenez sont un objet JavaScript, mais si vous utilisez dataType:"text"
, les données sont une chaîne JSON. Ensuite, l'utilisation de $.parseJSON
est acceptable.
Je voyais cette erreur unexpected token o
parce que mon code (incomplet) avait déjà été exécuté (rechargement actif!) Et que la valeur de stockage local à clé particulière était définie sur [object Object]
au lieu de {}
. Ce n'est que lorsque j'ai changé de clé que les choses ont commencé à fonctionner comme prévu. Vous pouvez également suivre ces instructions pour supprimer la valeur localStorage définie de manière incorrecte .