Элемент ответа JSON не определен

У меня возникла проблема с отображением текста ответа JSON: У меня есть следующий ответ:

{
  "status": false,
  "msg": "Achtung: Zeile 2 enthält ungültige Zeichen!",
  "csv_data": []
}

И теперь я хочу записать текст «msg» в консоль для тестовых целей. Вот что я пробовал:

[...], success: function (file, response) {
        // this response works and logs the above JSON
        console.dir(response);

        // the following return "undefined"
        console.info(response.msg);

В чем проблема? не могу найти неисправность... Спасибо за помощь! :)

Попробуйте typeof response, держу пари, это не объект, вам, вероятно, нужно сначала его десериализовать

CertainPerformance 13.03.2019 06:51

@CertainPerformance да, я также чувствую, что ответ приходит в виде строки ... @Philipp попробуйте десериализовать с помощью JSON.parse (ответ), а затем проверьте

Rajiv 13.03.2019 06:52

@CertainPerformance На самом деле я думал в том же духе, что это не то, что ожидалось, но я предположил, что это может быть массив - [{ "status": false, "msg": "Achtung: Zeile 2 enthält ungültige Zeichen!", "csv_data": [] }]

VLAZ 13.03.2019 06:52

Спасибо всем за быстрые ответы! К сожалению, пока ничего не помогает... @CertainPerformance typeof возвращает "string"

Karamellwuerfel 13.03.2019 06:58

@Rajiv, если я делаю json.parse, typeof говорит, что это объект var test = JSON.parse(response); console.info(typeof test);

Karamellwuerfel 13.03.2019 07:00

@Philipp, если typeof возвращает строку, тогда синтаксический анализ должен работать ... опубликуйте свою фактическую строку ответа

Rajiv 13.03.2019 07:01

Я разобрал его в json и все заработало. Спасибо, ребята, и хорошего дня! :) var test = JSON.parse(response); console.info(test.txt);

Karamellwuerfel 13.03.2019 07:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
7
278
4

Ответы 4

Может быть, потому что он стрингифицирован. Пытаться:

JSON.parse(response).msg

Если это не сработает, попробуйте:

response.data.msg

Ответ имеет тип string. вы должны разобрать его как json:

let response = '{"status": false, "msg": "Achtung: Zeile 2 enthält ungültige Zeichen!", "csv_data": []}'


let json_response = JSON.parse(response);
console.info(json_response.msg);

Проанализируйте ответ, если это не объект, иначе ничего не делайте

response = typeof response === 'object'? response: JSON.parse(response)
OR

try {
  response = JSON.parse(response)
} catch(err) {
  //do nothing
}

Завершая ответ, следуя указаниям AZ_,

const finalResponse = typeof response === 'object'? response: JSON.parse(response);
console.info(finalResponse.msg);

Другие вопросы по теме