У меня проблема с разбором простых строк JSON. Я проверил их на JSONLint, и это показывает, что они действительны. Но когда я пытаюсь проанализировать их, используя JSON.parse
или альтернативу jQuery, это дает мне ошибку неожиданный токен 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>
Примечание: я кодирую свои строки, используя json_encode ()
в PHP .
Ваши данные уже являются объектом. Не нужно разбирать это. Переводчик 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
}
});
Однако источником вашей ошибки является то, что вам нужно поместить полную строку 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>
cur_ques_details
уже является объектом JS, вам не нужно его анализировать
Ответ уже проанализирован, вам не нужно анализировать его снова. если вы проанализируете его снова, он даст вам «неожиданный токен 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"
, данные - это строка JSON. Тогда использование $ .parseJSON
в порядке.
Я видел эту ошибку неожиданный токен o
, потому что мой (неполный) код работал ранее (перезагрузка в реальном времени!) и установите для конкретного значения локального хранилища с ключом [object Object]
вместо {{{}}}
. Только когда я сменил ключи, все начало работать, как ожидалось. Кроме того, вы можете следовать этим инструкциям, чтобы удалить неправильно установленное значение localStorage.