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