Простой сеанс JSON терпит неудачу с ошибкой Uncaught: Неожиданный токен [дубликат]

var myname = str.match(/\?name=([^&]+)&/)[1];

[1] заключается в том, что вы, по-видимому, хотите получить значение группы (часть регулярного выражения в скобках).

var str = "/pages/new?name=reaojr&return_url=/page/new";
var matchobj = str.match(/\?name=([^&]+)&/)[1];
document.writeln(matchobj); // prints 'reaojr'
300
задан Li357 8 November 2016 в 02:44
поделиться

8 ответов

Ваши данные уже являются объектом. Не нужно разбирать его. Интерпретатор javascript уже проанализировал его для вас.

var cur_ques_details ={"ques_id":15,"ques_title":"jlkjlkjlkjljl"};
document.write(cur_ques_details['ques_title']);
566
ответ дан Dark Falcon 15 August 2018 в 16:08
поделиться
  • 1
    как обнаружить из jquery, если данные уже являются допустимым объектом json? – mko 15 September 2014 в 11:30
  • 2
    @mko: В этом случае вы этого не делаете. Вы знаете, что это или нет. Посмотрите на это и посмотрите, соответствует ли она спецификации JSON. – Dark Falcon 15 September 2014 в 13:49
  • 3
    @DarkFalcon я пошел с if (typeof data == 'object') {dostuff}, чтобы проверить, является ли это json-объектом или просто простой строкой – mko 15 September 2014 в 14:38
  • 4
    Обратите внимание, что JSON - это обозначение объекта JavaScript, поэтому явный JSON в источнике javascript - это просто объект JS. Мы заимствовали синтаксис объекта Javascript для передачи данных между языками программирования, потому что он был прост в использовании. – Filip Haglund 25 February 2015 в 18:12
  • 5
    @FilipHaglund: кроме синтаксиса для JSON гораздо более строгий, чем синтаксис для объекта JS. Например, JS разрешает имена некотируемых свойств, а JSON - нет. – Dark Falcon 25 February 2015 в 18:14

Однако источником вашей ошибки является то, что вам нужно поместить полную строку 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>
9
ответ дан ankit suthar 15 August 2018 в 16:08
поделиться

Я видел эту ошибку unexpected token o, потому что мой (неполный) код выполнялся ранее (live reload!) и задал для указанного ключевого значения локального хранилища значение [object Object] вместо {}. Только когда я сменил ключи, все началось, как и ожидалось. В качестве альтернативы вы можете выполнить эти инструкции, чтобы удалить неверно установленное значение localStorage .

0
ответ дан Community 15 August 2018 в 16:08
поделиться

У меня была та же проблема, когда я отправил данные с помощью 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 в порядке.

9
ответ дан Li357 15 August 2018 в 16:08
поделиться
  • 1
    Просто вызов JSON.stringify ничего не сделает с вашими данными, функция фактически возвращает сериализованные данные now . – Tom Hofman 15 August 2017 в 11:08

Ответ уже разобран, вам не нужно его снова разбирать. если вы снова проанализируете его, он даст вам «unexpected token o». если вам нужно получить его как строку, вы можете использовать JSON.stringify()

5
ответ дан msoliman 15 August 2018 в 16:08
поделиться

cur_ques_details уже является объектом JS, вам не нужно его анализировать

10
ответ дан Shuping 15 August 2018 в 16:08
поделиться
  • 1
    Нет такой вещи, как «объект JSON». JSON - это строка. Вы имеете в виду объект JS. – Joseph 25 March 2013 в 16:19
  • 2
    Я думаю, что он имел в виду «объект Javascript». – raffi 2 June 2017 в 08:01

Попробуйте разобрать так:

var yourval = jQuery.parseJSON(JSON.stringify(data));
53
ответ дан Юрий Шпакович 15 August 2018 в 16:08
поделиться
  • 1
    Это работало для меня для отладки. Большое спасибо. Я понял, что повторяю лишнюю информацию от своего контроллера. – Pathros 19 February 2018 в 18:00
8
ответ дан Li357 5 September 2018 в 15:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: