Получение НЕОПРЕДЕЛЕННОГО значения при вызове JSON

#javascript #ajax #undefined #console.log

Вопрос:

Во время [урока ajax/json] у меня была только одна ошибка. Я следовал учебнику до конца, но там, где выводилось значение объекта «имя», я продолжал получать «неопределенное» для моего вывода. Единственный способ, которым я мог заставить его вывести «Rick», — это использовать console.log(пользователь[0].имя) вместо того, что было в учебнике: «console.log(user.name)». Пользователем var был JSON.parse в соответствии с инструкциями.

ФАЙЛ JSON (user.json):

 [  {  "id": 1,  "name": "Rick",  "email": "rick@mail.com"  } ]  

HTML — файл (ajax2.html):

 lt;!DOCTYPE htmlgt; lt;htmlgt; lt;headgt;  lt;meta charset="utf-8"gt;  lt;meta name="viewport" content="width=device-width, initial-scale=1"gt;  lt;titlegt;Ajax 2 - Local JSONlt;/titlegt;  lt;stylegt;  *, html { background: #333; color: #eee; }  lt;/stylegt; lt;/headgt; lt;bodygt;  lt;button id="button1"gt;Get Userlt;/buttongt;  lt;button id="button2"gt;Get Userslt;/buttongt;  lt;br /gt;lt;br /gt;  lt;h1gt;lt;div id="user"gt;lt;/divgt;lt;/h1gt;  lt;br /gt;  lt;h2gt;lt;div id="users"gt;lt;/divgt;lt;/h2gt;   lt;scriptgt;  function loadUser() {  var xhr = new XMLHttpRequest();  xhr.open('GET', 'user.json', true);   xhr.onload = function() {  if(this.status == 200) {  var user = JSON.parse(this.responseText);  console.log(user.name); // Output name "Rick"  }  }   xhr.send();  }   document.getElementById('button1').addEventListener('click', loadUser);    lt;/scriptgt;  lt;/bodygt; lt;/htmlgt;  

Я продолжаю получать Неопределенное. Но кодирование:

 if(this.status == 200) {  console.log(this.responseText); // Output the object key/values }  

Будет правильно выводить объект.

Есть какие-нибудь идеи относительно того, почему я получу неопределенное? Я использую XAMPP, и мой браузер Chrome также обновлен.

Дайте мне знать, если мне понадобится добавить какую-либо информацию. Я искал возможные ответы, но это просто завело меня в кроличью нору.

Комментарии:

1. «вместо того, что было в учебнике» — тогда ваш учебник неверен. user представляет собой массив.

2. Моя ошибка. Я имел в виду массив, а не объект. Тем не менее, мой вопрос по-прежнему заключается в том, почему это сработало в видеоуроке, а не для меня. Я также признателен вам за то, что вы объяснили разницу.

Ответ №1:

вы должны удалить скобки из файла user.json.

 {  "id": 1,  "name": "Rick",  "email": "rick@mail.com" }  

Комментарии:

1. Спасибо! Вот и все. Я пропустил скобки в файле user.json. Мои глаза были перекрещены от прыжка в кроличью нору, когда я пытался исследовать ее сам.