За последние 24 часа нас посетили 20740 программистов и 1130 роботов. Сейчас ищут 374 программиста ...

Получаю undefined при попытке прочитать значение из json

Тема в разделе "JavaScript и AJAX", создана пользователем Сереганек, 15 дек 2017.

  1. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Есть скрипт на клиенте, который отправляет значение счетчика, и получает обратно новое значение счетчика + строковые данные в формате json.

    Код (Javascript):
    1. function imp(counter, url) {
    2.                 cnt = counter;
    3.                 $.ajax({
    4.                     url: url,
    5.                     type: 'POST',
    6.                     data: 'counter=' + cnt,
    7.                     dataType: 'json',
    8.                     success: function (data) {
    9.                         $('.my-info-block-last').append('<div class="alert alert-success top-for-alert" role="alert">' + data.comp + '</div>');
    10.                     }
    11.                 });
    12.             }
    Запрос/ответ работают - код 200. Но на страницу почемуто вместо строки "NameNameNameNameNameNameName" выводится undefined. Насколько я понял, указав скрипту dataType: 'json', он автоматически распарсит json. Где здесь косяк?


    Вот примерно такой ответ должен принимать скрипт
    Код (Javascript):
    1. [{"comp":"NameNameNameNameNameNameName","counter":0}]
     
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    что в дата присылается?
     
  3. Сереганек

    Сереганек Активный пользователь

    С нами с:
    18 янв 2017
    Сообщения:
    333
    Симпатии:
    27
    Вот такая строка (скопировал прямо из запроса, вкладка Response):
    [{"comp":"NameNameNameNameNameNameName","counter":0}]
    Эта строка формируется на бэкенде через метод:
    PHP:
    1. json_encode($messages);
    где $messages - это массив, где записаны значения в: $messages['comp'] и $messages['counter']
    --- Добавлено ---
    пробовал также:
    Код (Javascript):
    1. dataType: 'text',
    2. ...
    3. var parsed = JSON.parse(data);
    4. $('.my-info-block-last').append('<div class="alert alert-success top-for-alert" role="alert">' + parsed.comp + '</div>');
    та же фигня ((
    --- Добавлено ---
    Ну и если без парсинга вообще, то вся моя строка в json формате выводится на страницу. Т.е. это и есть то, что присылается в дата
    --- Добавлено ---
    Убрал один параметр из массива. У меня даже такой json не парсится
    Код (Javascript):
    1. [{"counter":0}]
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    data[0].comp
     
    Сереганек нравится это.
  5. PhpStorm

    PhpStorm Новичок

    С нами с:
    21 сен 2017
    Сообщения:
    65
    Симпатии:
    11
    Адрес:
    JetBrains
  6. Sail

    Sail Старожил

    С нами с:
    1 ноя 2016
    Сообщения:
    1.591
    Симпатии:
    360
    console.log(data) и увидите, что он действительно принимает.
     
  7. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.734
    Симпатии:
    1.315
    Адрес:
    Лень
    Господа, новый год прошел
     
    denis01 нравится это.