[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Динамическое добавление Object в сущ.. Object
sharki
Всем привет, вопрос таков, допустим у нас есть объект

// некий объект 
var obj = {
sid : "32423j4k2j4k2424d34",
img : "/sdfsdf.png",
params : [{id:32, name: 'sdfsdf'}.....{...}...]
};


и через AJAX я получаю JSON данные, допустим я его парсю, т.е строку превращаю в цельный объект

var n = jQuery.parseJSON(msg);


теперь мне надо впиндерить данный объект в существующий obj. НЕ прописывая вручную в obj - n : n ....

почитал гугл и сопутствующие сайты, чет не нашел подобного.

Есть еще пару вариантов получения объекта, например на PHP я рисую структуру будущего объекта, или 2х или 3х, т.е

$obj = "var b = {.......}";
$obj .= "var m = {.......}";


и тупо выдаю строку, а в JS я уже запускаю EVAl()...

И вот она задача, есть какие нибудь методы добавления объектов в объекты? :) Или куды копать?



Спустя 35 минут, 8 секунд (9.08.2011 - 16:59) Michael написал(а):
а почему не используешь в php функцию json_encode, а в jquery - getJSON ?

Насчет "впиндерить", не понял о чем речь.

Спустя 16 минут, 28 секунд (9.08.2011 - 17:16) sharki написал(а):
Michael
Я так и делаю в общем то, я про json_encode. getJSON по идее == parseJSON() :) но не важно.

Цитата
Насчет "впиндерить", не понял о чем речь.


Смотри, есть у нас объект, уже созданный на страничке
var obj = {
sid : "32423j4k2j4k2424d34",
img : "/sdfsdf.png",
params : [{id:32, name: 'sdfsdf'}.....{...}...]
};


Потом всякими манипуляциями, я AJAX'ом получаю


{
id : 1,
value : 1,
text : "700*400 прямоугольник",
indexLine : 2
}


В итоге у меня есть объект, далее мне надо добиться следующего вида

var obj = {
sid : "32423j4k2j4k2424d34",
img : "/sdfsdf.png",
params : [{id:32, name: 'sdfsdf'}.....{...}...],
n: { //Как видим у нас появился новый объект "абстрактно"
id : 1,
value : 1,
text : "700*400 прямоугольник",
indexLine : 2
}
}
;


Можно прописать вручную т.е
obj.n = {                                 
id : 1,
value : 1,
text : "700*400 прямоугольник",
indexLine : 2
}


Теперь у нас есть нужный объект в объекте. Но мы прописали вручную!


Вот например в PHP есть функция (работая с массивом), который сливает 2 массива в один. В итоге все на одном уровне,
и не надо прописывать

(далее JS)

В этом случае, мы новый объект "оболочку", в которой находятся много других объектов засовываем в существующий объект obj, и получается вот такая длиннющая строка.
obj.n[0].blabla.name



Хотя вот так удобнее

var obj = {
sid : "32423j4k2j4k2424d34",
img : "/sdfsdf.png",
params : [{id:32, name: 'sdfsdf'}.....{...}...],
n: { //Как видим у нас появился новый объект "абстрактно"
id : 1,
value : 1,
text : "700*400 прямоугольник",
indexLine : 2
}
}
;



Так то много способов автоматизировать всё это, но в итоге будем путаться в этих обращениях массива->объект и т.п..., а не просто obj.и_новенький(е)_полученный(е)_объек(ы)

Спустя 14 минут, 15 секунд (9.08.2011 - 17:30) Michael написал(а):
blink.gif rolleyes.gif , как у тебя мысли скачут. То объекты, то массивы под конец.
Цитата
Можно прописать вручную т.е

obj.n = data; // data - тот объект, что получили json-ом

Массивы в js через квадратные скобки определяются - []

Спустя 9 минут, 10 секунд (9.08.2011 - 17:39) sharki написал(а):
Конец раб. дня, вот и скачут :D
В общем нашел способ :)
например я получаю нужный мне массив с объектами JSON типа, потом я циклом по нему прохожусь, при каждой итерации я получаю нужные мне данные, например имя.

исходный массив

 o = [{name: 'test', src: {и все св-ва и т.д НОВОГО ОБЪЕКТА} },{.......по аналогии.......}]
for (var i = 0; i < o.length; i++) {
obj[o[i].name] = o[i].src;
}

И вуаля :)

Щас грязный код, просто показал смысл, потом надо допиливать

Спустя 15 часов, 37 минут, 50 секунд (10.08.2011 - 09:17) sharki написал(а):
Может кому пригодится :)

Вообщем все так как я и хотел, вот результат дампа итогового объекта
object {
id: 1
name: книга
sid: 32423j4k2j4k2424d34
img: /sdfsdf.png
price: 3453
count: 3
currency: руб
steps: object {
this_step: 2
title: object {
0: Выбирите нужные параметры книги
1: остальное 2
2
: остальное 3
}
}

test: object {
id: 234
bla: fsf
}
test2: object {
id: 214
bla: fsf
}
test3: object {
id: 224
bla: fsf
}
}


Реализация
// некий объект 
var obj = {
id : 1, // id объекта
name : "книга", // имя
sid : "32423j4k2j4k2424d34",
img : "/sdfsdf.png",
params : params,
price : 3453,
count : 3,
currency : 'руб',
steps : {
this_step: 2, title : ['Выбирите нужные параметры книги','остальное 2','остальное 3']
},
pages : pages

};

JSON'ом тянем нужный массив
bl = [{name: 'test', src: {id: 234, bla:'fsf'}},{name: 'test2', src: {id: 214, bla:'fsf'}},{name: 'test3', src: {id: 224, bla:'fsf'}}];
for (var i = 0; i < bl.length; i++) { // и добавляем
obj[bl[i].name] = bl[i].src;
}


Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.