Javascript.RU

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

динамический JSON
интересует собственно как динамически собирать JSON?

как присаивать значения к ключам ето понятно. интересует именно как динамически добавалять ключи и к ним соответсвенно значения?
Ответить с цитированием
  #2 (permalink)  
Старый 24.06.2010, 18:18
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Формируете объект и делаете ему JSON.stringify(obj).
Ответить с цитированием
  #3 (permalink)  
Старый 24.06.2010, 18:33
Аспирант
Отправить личное сообщение для hangover Посмотреть профиль Найти все сообщения от hangover
 
Регистрация: 08.10.2009
Сообщений: 53

Спасибо, нашол пример, но если я не ошибаюсь то так не подойдет.
Задача в том что на странице есть несколько input type="text"
и нужно сформировать JSON объект имя_поля:значение_поля.
в примере который я смотрел, объект сформирован заранее, а количество полей на странице может быть совершенно разное и с разными именами.

вот тот пример:

var contact = new Object();
contact.firstname = "Jesper";
contact.surname = "Aaberg";
contact.phone = ["555-0100", "555-0120"];

var memberfilter = new Array();
memberfilter[0] = "surname";
memberfilter[1] = "phone";
var jsonText = JSON.stringify(contact, memberfilter, "\t");
/* the value of jsonText is
'{
    "surname": "Aaberg",
    "phone": [
        "555-0100",
        "555-0120"
    ]
}'
*/
Ответить с цитированием
  #4 (permalink)  
Старый 24.06.2010, 18:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от hangover
а количество полей на странице может быть совершенно разное и с разными именами.
И что? Проблема-то в чём?
Ответить с цитированием
  #5 (permalink)  
Старый 24.06.2010, 19:07
Аспирант
Отправить личное сообщение для hangover Посмотреть профиль Найти все сообщения от hangover
 
Регистрация: 08.10.2009
Сообщений: 53

1)можно пример пожалуйста.

вот например есть два массива: имена и значения
var name =['name','email','phone'];
var val = ['js','js@js','12312'];

нужно софрмировать JSON:
{"name":"js","email":"js@js","phone":"12312"}



2)
Цитата:
И что? Проблема-то в чём?
у меня проблема в том что не получаетсья динамически добавлять свойства ( переменные) объекту. например просто
var obj = {};
obj.name = 'js';

ето понятно.
а если name - получаю динамически на странице? например:
var obj = {};
var property = document.getElementById('name');
var key = property.name;
var val = property.value;
//вот как тут добавть?
//obj.key = val;
//так объекту добавится же свойство 'key'  а не значение переменной key.


может тут eval в помощь? но не получилось


разьясните пожалуйста.
Ответить с цитированием
  #6 (permalink)  
Старый 24.06.2010, 19:24
Аспирант
Отправить личное сообщение для hangover Посмотреть профиль Найти все сообщения от hangover
 
Регистрация: 08.10.2009
Сообщений: 53

решил пока пробелму так :

k и v масисвы с именами и значениями.

if(k.length == v.length){
			
			var sData = '{';
			
				for(var j=0; j<k.length; j++){
					
					sData = sData + '"'+k[j]+'"'+':'+'"'+v[j]+'",';
										
				}
				
				sData = sData.substr(0,(sData.length-1));
				sData = sData + '}';
				var t = eval('('+sData+')');
				alert(t['name']);
		}


не сильно ли криво?


п.с. все таки можете пожалуйста разьяснить мне второй вопрос в предыдушем сообшении?

п.с.с. и послений вопрос: почему
var t = eval('('+sData+')');

работает, а
var t = eval(sData);

не работает?

в чем суть дополнитеьных скобочек в кавычках?

Последний раз редактировалось hangover, 24.06.2010 в 19:26.
Ответить с цитированием
  #7 (permalink)  
Старый 24.06.2010, 19:39
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

Сообщение от hangover
//вот как тут добавть?
//obj.key = val;
//так объекту добавится же свойство 'key' а не значение переменной key.
Не поленись почитать про объекты, и узнаешь что нужно делать так obj[key] = val; Тогда и объекты не eval'ом создавать будешь
Ответить с цитированием
  #8 (permalink)  
Старый 24.06.2010, 19:51
Аспирант
Отправить личное сообщение для hangover Посмотреть профиль Найти все сообщения от hangover
 
Регистрация: 08.10.2009
Сообщений: 53

*fail*

читал и не один раз. как то совершенно из головы вылетело.
Ответить с цитированием
  #9 (permalink)  
Старый 24.06.2010, 19:56
Профессор
Отправить личное сообщение для Sweet Посмотреть профиль Найти все сообщения от Sweet
 
Регистрация: 16.03.2010
Сообщений: 1,618

не, это уже *epicfail* Ну вот же! Ипрям черным по белому:
var name = 'test' 
o[name] = 5
Ответить с цитированием
  #10 (permalink)  
Старый 24.06.2010, 19:57
Аспирант
Отправить личное сообщение для hangover Посмотреть профиль Найти все сообщения от hangover
 
Регистрация: 08.10.2009
Сообщений: 53

уже увидел, спасибо )
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
JSON основы вопросы mycoding Общие вопросы Javascript 9 12.04.2010 19:59
не работает JSON в JQuery 1.4.1 mcpro jQuery 7 22.03.2010 17:56
Jquery, Dynatree и JSON antirek jQuery 6 01.09.2009 15:00
Что выбрать XML или JSON для передачи Ajax - ом из PHP в JS Gozar Общие вопросы Javascript 20 16.08.2009 23:36
treeview и JSON PANKOFF jQuery 2 21.05.2009 14:46