Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 25.02.2012, 18:31
Новичок на форуме
Отправить личное сообщение для delargo Посмотреть профиль Найти все сообщения от delargo
 
Регистрация: 25.02.2012
Сообщений: 4

Обработка массива в json
Есть ответ от сервера (переменная r ниже):
VK.Api._callbacks[3704529]({"response":[{"account_id":160_еще_цифры,"account_status":1,"access_role":"admin"}]});


Есть функция, которая обрабатывает ответ от сервера:

function doAfterGetAccounts(r){
  if(r.error) alert("Ошибка получения списка аккаунтов");
  if(r.response){
    var s = "";
    s += "lenght: " + r.response.lenght + "\n";
    var accounts = new Array();
    for(var i = 0; i < r.response.lenght; i++){ 
      s += i + " loop\n";
      accounts[i] = new Account(r.response[i].account_id, r.response[i].account_status, r.response[i].access_role);
    }
  alert(s);
  }
}


Искал в интернете, ни где нормального разъяснения не нашел.

Вопрос: почему на строчку r.response.lenght выдается ответ undefined, и, следовательно, цикл ни разу не обрабатывает массив? Как с этим бороться, чтобы получить массив элементов (в моем случае массив, содержащие один элемент, но может быть и большее количество элементов, количество которых заранее не известно)?

Мои комментарии: Я так понимаю, что новая версия JavaScript сама распарсивает JSON. Поэтому, если обращаться через r.response[0].account_id программы выдает адекватный ответ. А вот как работать с любым количеством элементов - я пока не знаю. Разве что можно попробовать конструкцию try/catch, но она не лучший выход.

Заранее благодарен.
Ответить с цитированием
  #2 (permalink)  
Старый 25.02.2012, 20:47
Профессор
Отправить личное сообщение для nikita.mmf Посмотреть профиль Найти все сообщения от nikita.mmf
 
Регистрация: 01.02.2010
Сообщений: 364

Могу только предположить, что r.response - это не массив, а объект. Тогда можно поступить следующим образом
for( var i = 0, account; (account = r.response[i]); i++ ) {
    accounts[i] = new Account( account.account_id, account.account.status, account.access_role );
}
Ответить с цитированием
  #3 (permalink)  
Старый 26.02.2012, 14:40
Новичок на форуме
Отправить личное сообщение для delargo Посмотреть профиль Найти все сообщения от delargo
 
Регистрация: 25.02.2012
Сообщений: 4

Спасибо за избавление от мучений непонимания.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
из массива json в (php) переменные Sadist_dead AJAX и COMET 6 24.08.2011 22:58
Вывод переменного по количеству элементов массива из json ArmagedDance Элементы интерфейса 4 08.06.2011 10:45
Обработка JSON menangen AJAX и COMET 0 14.05.2011 16:54
Парсинг JSON массива со скобками [ ] lightdesign jQuery 1 24.04.2011 15:35
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10