単純なJSON文字列の解析に問題があります。私は JSONLint でそれらをチェックしました、そしてそれはそれらが有効であることを示しています。しかし、JSON.parse
またはjQueryの代替手段を使用してそれらを解析しようとすると、エラー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>
注意:私はPHPでjson_encode()
を使って文字列をエンコードしています。
あなたのデータはすでにオブジェクトです。解析する必要はありません。 JavaScriptインタプリタはすでにあなたのためにそれを解析しました。
var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
解析してみてください。
var yourval = jQuery.parseJSON(JSON.stringify(data));
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
はすでにJSオブジェクトなので、解析する必要はありません。
ただし、エラーの原因は、JSON文字列全体を引用符で囲む必要があることです。次のようにしてサンプルを修正します。
<!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>
他の回答者が述べたように、オブジェクトはすでにJSオブジェクトに解析されているので、解析する必要はありません。解析せずに同じことを実行する方法を説明するには、次のようにします。
<!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>
応答は既に解析されています。もう一度解析する必要はありません。もう一度解析すると、 "unexpected token o
"になります。文字列として取得する必要がある場合は、JSON.stringify()
を使用できます。
JQuery AJAXを使用してデータを送信したときも同じ問題がありました。
$.ajax({
url:...
success:function(data){
//server response's data is JSON
//I use jQuery's parseJSON method
$.parseJSON(data);//it's ERROR
}
});
レスポンスがJSONであり、このメソッドを使用する場合、取得するデータはJavaScriptオブジェクトですが、dataType:"text"
を使用する場合、dataはJSON文字列です。それなら$.parseJSON
の使用は問題ありません。
私の(不完全な)コードは以前に実行され(live reload!)、特定のキー付きローカルストレージの値をunexpected token o
ではなく[object Object]
に設定していたため、この{}
エラーが発生しました。私が鍵を変更したときになって、期待通りに機能し始めました。あるいは、 これらの指示に従って、誤って設定されたlocalStorage値を削除することもできます 。