Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 29.05.2011, 15:09
Новичок на форуме
Отправить личное сообщение для artlayers Посмотреть профиль Найти все сообщения от artlayers
 
Регистрация: 17.03.2010
Сообщений: 6

Переменная не могу понять в чем проблема. Как узнать тип?
Проблема такая. Есть скрипт, он строит дерево. Дерево задается в js коде так:
var elements = [{"id":0,"content":"Root","children":[{"id":1,"content":"Data 1","children":[{"id":2,"content":"Data 2","children":[{"id":3,"content":"Data 3","children":[{"id":4,"content":"Data 4","children":[]}]}]}]}]}];

Но, от руки его задавать не нужно, я такую стуктуру получаю от php файла, который ее формирует. Если взять скопировать сформированное дерево и вставить в переменную elements, то все чудесно, но если присвоить
var elements = data

, где data содержит
[{"id":0,"content":"Root","children":[{"id":1,"content":"Data 1","children":[{"id":2,"content":"Data 2","children":[{"id":3,"content":"Data 3","children":[{"id":4,"content":"Data 4","children":[]}]}]}]}]}]

то есть тоже самое, то ничего не работает.
Провел эксперимент - перевел в строку то что задаю копированием простым и то что задаю присвоением и измерил длину. Так вот, длина того что задано копированием 15, длина присвоенного 205. Если вывести содержимое, то оно идентично до символа. Где искать проблему, подскажите?
Ответить с цитированием
  #2 (permalink)  
Старый 29.05.2011, 15:29
Новичок на форуме
Отправить личное сообщение для artlayers Посмотреть профиль Найти все сообщения от artlayers
 
Регистрация: 17.03.2010
Сообщений: 6

отладчиком в IE увидел тип который определяется для переменной в случае когда все работает.

С переменной elements все чудесно работает с elements1 - нет. Нужно привести к типу elements.
Как привести переменную к первому типу?

Последний раз редактировалось artlayers, 29.05.2011 в 15:42.
Ответить с цитированием
  #3 (permalink)  
Старый 29.05.2011, 15:49
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

Сообщение от artlayers
Как привести переменную к первому типу?
у вас JSON-строка ее нужно распарсить с помощью специальных методов либо через eval();
Ответить с цитированием
  #4 (permalink)  
Старый 29.05.2011, 15:52
Новичок на форуме
Отправить личное сообщение для artlayers Посмотреть профиль Найти все сообщения от artlayers
 
Регистрация: 17.03.2010
Сообщений: 6

Вы меня спасли! Спасибо!
Ответить с цитированием
  #5 (permalink)  
Старый 29.05.2011, 16:01
Особый гость
Посмотреть профиль Найти все сообщения от monolithed
 
Регистрация: 02.04.2010
Сообщений: 4,260

на всякий случай:
var json =  JSON.parse('{"foo" : 0, "bar" : 1}');

for(i in json) {
   if(json.hasOwnProperty(i)) {
       alert(i + ': ' +json[i]);
    }
}


ну и или так:
var data = "{'foo' : 0, 'bar' : 1}",
    json =  eval('('+data+')');

for(var i in json) {
   if(json.hasOwnProperty(i)) {
       alert(i + ': ' +json[i]);
    }
}

Последний раз редактировалось monolithed, 29.05.2011 в 16:09.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как узнать какой ресурс кушают мои скрипты Lis_chetson Общие вопросы Javascript 2 11.09.2010 18:08
проблема с рекурсией, не могу понять почему скрипт не выходит из неё. Flirer Общие вопросы Javascript 5 24.12.2009 01:01
Как узнать о том, что флэш уже загрузился. Snipe Общие вопросы Javascript 4 29.01.2009 11:21
не могу понять в чём ошибка scuter Общие вопросы Javascript 2 28.08.2008 15:22
Не могу понять как работает jQuery kostiaGt jQuery 2 20.07.2008 08:42