|
JSON + Cache
|
|||
---|---|---|---|
#18+
Здравствуйте. Появилась задача связать cache+jquery+JSON. Использую csp - страницу. Встала задача обмена данными между клиентской и серверной частью приложения. Что удалось сделать на данный момент: на основе примера из ветки форума http://www.sql.ru/forum/953179/jquery-json-ajax-cache 1) Удалось передать json объект и вернуть его. 2) Удалось возвратить из базы массив объектов json. Возникло несколько трудностей: 1) Как вернуть с серверной части сложно-структурированные объекты (типа Лист в листе у вложенного листа есть еще 1 лист)? может есть какой нибудь метод обработки в JSON? 2) Не получается получить id-шник у списка объектов объявленных как relationship. Например,Класс имеет ссылку сам на себя, у него есть некоторое поле в котором он хранит объекты этого же класса в виде отношений. Как получить ID у объекта в этом поле? Хотелось бы увидеть наглядный пример работы с обменом данными различной сложностью между клиентом и сервером. Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 12:38 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Для начала укажите версию Cache. на счет примеров, сейчас уже есть открытые проекты на Cache, смотрите в их сторону. Например сервер вакансий ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 12:42 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_Objectтипа Лист в листе, у вложенного листа есть еще 1 лист... может есть какой нибудь метод обработки в JSON? JSON - ничего не знает о серверных структурах данных. Но вы можете написать свой парсер на javascript для разбора структуры $LISTBUILD ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 13:01 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_Object 1) Как вернуть с серверной части сложно-структурированные объекты (типа Лист в листе у вложенного листа есть еще 1 лист)? может есть какой нибудь метод обработки в JSON? JSON это формат объекта у JavaScript про кащейские листы он знать не знает... New_Object 2) Не получается получить id-шник у списка объектов объявленных как relationship. В этих свойствах хранятся не ИДшники, а орефы... Для получения ИД экземпляра нужно использовать метод Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 13:58 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Код: vbnet 1.
Лучше Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:05 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_Object1) Как вернуть с серверной части сложно-структурированные объекты (типа Лист в листе у вложенного листа есть еще 1 лист)? может есть какой нибудь метод обработки в JSON? JSON(List of List)demo.test.clsClass demo.test Extends %RegisteredObject { Property list As list Of %ListOfDataTypes; ClassMethod GetObject( ByRef pParms As %String, Output obj As demo.test) As %Status { s obj=..%New() s list1=##class(%ListOfDataTypes).%New() d list1.Insert(1) d list1.Insert(2) s list2=##class(%ListOfDataTypes).%New() d list2.Insert(5) d list2.Insert(6) d list2.Insert(7) s list3=##class(%ListOfDataTypes).%New() d list3.Insert(10) d obj.list.Insert(list1) d obj.list.Insert(list2) d obj.list.Insert(list3) q $$$OK } } <head> <title>JSON (List Of List)</title> <script type="text/javascript" src="zenutils.js"></script> <script type="text/javascript" src="zenCSLM.js"></script> <script type="text/javascript"> function test() { #(##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONFromObject("myJSON","demo.test","GetObject",,,"aeloq"))# var str=ZLM.jsonEncode(myJSON); zenAlert("json(str)=",str,"\njson(obj)=",myJSON); } </script> </head> <body> <button onclick="test();">test</button> </body> </html> ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:10 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
DAiMorДля начала укажите версию Cache. на счет примеров, сейчас уже есть открытые проекты на Cache, смотрите в их сторону. Например сервер вакансий спасибо за ссылку. версия каше 2013.2 ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:10 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_Objectверсия каше 2013.2Обновитесь: такой версии уже нет и не будет. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:17 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_Object2) Не получается получить id-шник у списка объектов объявленных как relationship. Например,Класс имеет ссылку сам на себя, у него есть некоторое поле в котором он хранит объекты этого же класса в виде отношений. Как получить ID у объекта в этом поле?См. соответствующие методы класса %Library.RelationshipObject . ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:28 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
krvsa, В базе имеется такая структура: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
В javascript есть метод stringify которому достаточно передать лист верхнего уровня и он сгенерирует структуру, есть ли такая же штука в каше или надо будет парсить в ручную запросами к базе=))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:52 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
sigmovЛучше Код: vbnet 1.
А чем %Id() провинился? ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:53 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_ObjectВ базе имеется такая структура: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
В какой "базе"? Для Каше это не "структура"... Это тупо строка с символами или бинаристрим, что почти одно и то же... New_ObjectВ javascript есть метод stringify которому достаточно передать лист верхнего уровня и он сгенерирует структуру, есть ли такая же штука в каше или надо будет парсить в ручную запросами к базе=))) Строку придется разбирать самому... Если конечно нет соответствующих классовых методов в том же ZEN-пакете... ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 15:59 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_ObjectВ javascript есть метод stringify, которому достаточно передать лист верхнего уровня и он сгенерирует структуру JSON.stringify сгенерирует строку ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 16:14 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Может есть смысл посмотреть в сторону разработок Rob Tweed на сайте http://gradvs1.mgateway.com/main/ и не только. Он вроде эту технологию предлагает и выдвигает упорно. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 17:45 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Здесь все его статьи http://robtweed.wordpress.com/ ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 17:53 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Спасибо всем за информацию, теперь стало немного понятнее. =)) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 19:09 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
krvsaА чем %Id() провинился? Ругается что это Oref =)) %Id() это первое, что пришло в голову =) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.11.2013, 19:11 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Смотрите, а вот если я открыл объект, у которого есть связи с другими объектами, а у тех тоже и тп: s person = ##class(Person).%OpenId(1) Если делаю так, то выводит чуть-ли не пол базы из-за связей: d ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(person) Можно как-то ограничить глубину и что означает параметр pLevel в методе. Или создавать самому промежуточный объект (proxyObject) и его выводить... ... |
|||
:
Нравится:
Не нравится:
|
|||
30.11.2013, 16:47 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
VArtemМожно как-то ограничить глубину и что означает параметр pLevel в методе. Так то может и есть тот самый ограничитель? ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 10:14 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Нет, pLevel используется для форматирования Код: vbnet 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 18:10 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
Добрый день! всем спасибо, за примеры отдельное спасибо!=) сделал все по образу и подобию=) Возник новый вопрос чисто "косметический"=))) Хочу сделать добавление новых данных и тут же выгрузку их в клиентскую часть. что работает: У меня выгрузка из базы записана в javascript как в примере только по готовности страницы. Код: javascript 1. 2. 3. 4.
все работает. и продублировал этот же метод на кнопку добавления нового элемента. В результате данные в базу добавляются, но выгруженный список остается без изменений. стоит обновить страницу и все отображается нормально =) причем если 2 элемента все без изменений. Следовательно вопрос, почему так? Как это исправить? P.S. вешать костыль принудительного обновления страницы не хочется =) или это будет не костыль? и только там можно исправить? Заранее спасибо=) ... |
|||
:
Нравится:
Не нравится:
|
|||
01.12.2013, 21:00 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
New_Object , Код получения JSON по требованиюdemo.test.clsClass demo.test Extends %RegisteredObject { Property list As list Of %ListOfDataTypes; ClassMethod GetJSONStr() As %String { #dim ex As %Exception.AbstractException s res="" s obj=..%New() s list1=##class(%ListOfDataTypes).%New() d list1.Insert(1) d list1.Insert(2) s list2=##class(%ListOfDataTypes).%New() d list2.Insert(5) d list2.Insert(6) d list2.Insert(7) s list3=##class(%ListOfDataTypes).%New() d list3.Insert(10) d obj.list.Insert(list1) d obj.list.Insert(list2) d obj.list.Insert(list3) try{ $$$ThrowOnError(##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONStreamFromObject(.stream,obj,,,1,"aeloq")) s res=stream.Read() }catch ex{ d ex.Log() } q res } } <head> <title>JSON (List Of List)</title> <script type="text/javascript" src="zenutils.js"></script> <script type="text/javascript" src="zenCSLM.js"></script> <script type="text/javascript"> function test() { var str=#server(demo.test.GetJSONStr())#; var myJSON=ZLM.jsonParse(str); zenAlert("json(str)=",str,"\njson(obj)=",myJSON); } </script> </head> <body> <button onclick="test();">test</button> </body> </html> ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 12:10 |
|
JSON + Cache
|
|||
---|---|---|---|
#18+
VArtemИли создавать самому промежуточный объект (proxyObject) и его выводить...Или использовать SQL, если структура позволяет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2013, 12:13 |
|
|
start [/forum/topic.php?fid=39&msg=38480500&tid=1557012]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 238ms |
total: | 488ms |
0 / 0 |