Intereting Posts
Неверное преобразование PHP strtotime Обнаруживать, если какой-либо IE (MSIE) Архив ZIP, отправленный PHP, поврежден Как я могу определить уникальный URL-адрес для пользователя без использования их идентификатора? вернуть одно значение из базы данных с помощью mysql php pdo Как регистрировать каждый ответ в рамках laravel 5.2 Хороший веб-менеджер загрузки? Как добавить категорию в Magento через сценарий установки? Как загрузить файл в базу данных mysql на общей платформе хостинга? Как использовать omnipay для проверки того, является ли он ожидающим платежа или нет Поле предупреждения PHP HTML при успешной регистрации Почему Iframe не работает для yahoo.com Как получить второе значение в раскрывающемся списке на основе выбранного в первом раскрывающемся списке Поместите URL-адреса из строки в массив с помощью regex (проблема с периодом ожидания) Почему я получаю фатальную ошибку при вызове конструктора родителя?

Доступ к данным JSON в переменной Javascript

Мне неловко спрашивать, но я свободно признаю, что я – нескромный разработчик Javascript, и я просто не могу понять это. Надеюсь, это будет мертво просто для кого-то другого, и я хочу поблагодарить всех здесь заранее за помощь, которую этот сайт постоянно предоставляет мне.

Пару дней назад я задал этот вопрос и больше не получаю эту ошибку. Но я столкнулся с стеной, пытаясь фактически получить доступ к данным, хранящимся в переменной. Мой JSON выглядит так:

[ {"id":"1","name":"Bob","haircolor":"Brown"}, {"id":"2","name":"Carol","haircolor":"Red"} ] 

Он переходит в переменную вроде этого:

 var people=[]; $.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON people.push(data); }); 

Благодаря инициализации людей как массива, я больше не получаю сообщений об ошибках. Но я не могу получить доступ к содержимому людей. people.length возвращает 0, а people[0] и people[1] не определены.

Это там, я знаю, что все это есть, но у меня есть дьявол времени, выясняя, где.

Попробуйте следующее: http://jsfiddle.net/hUq7k/

 $.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON $.each(data, function(i, people){ console.log(people.id); //<------this should output "1, 2" }); }); 

убедитесь, что вы получаете response data .

people получают значения только после события ajax.

Вызовите некоторую функцию обратного вызова после того, как вы поместите данные в массив people .

Следующее должно работать, если сервер фактически возвращает ожидаемый JSON:

 $.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON var people = data; alert("people.length: " + people.length); if (people.length > 0) { alert("people[0].id: " + people[0].id); } }); 

Следующие не должны работать, т. Е. people будут undefined , потому что $ .getJSON является асинхронным методом, и этот код пытается получить доступ к people до завершения операции AJAX.

 var people; $.getJSON("php/getpeople.php", function(data){ //getpeople.php generates the JSON people = data; }); alert("people.length: " + people.length); if (people.length > 0) { alert("people[0].id: " + people[0].id); }