powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JSON + Cache
24 сообщений из 24, страница 1 из 1
JSON + Cache
    #38479648
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте.
Появилась задача связать 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 у объекта в этом поле?

Хотелось бы увидеть наглядный пример работы с обменом данными различной сложностью между клиентом и сервером.

Заранее спасибо!
...
Рейтинг: 0 / 0
JSON + Cache
    #38479666
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для начала укажите версию Cache.
на счет примеров, сейчас уже есть открытые проекты на Cache, смотрите в их сторону.
Например сервер вакансий
...
Рейтинг: 0 / 0
JSON + Cache
    #38479724
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Objectтипа Лист в листе, у вложенного листа есть еще 1 лист... может есть какой нибудь метод обработки в JSON?
JSON - ничего не знает о серверных структурах данных. Но вы можете написать свой парсер на javascript для разбора структуры $LISTBUILD
...
Рейтинг: 0 / 0
JSON + Cache
    #38479854
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Object 1) Как вернуть с серверной части сложно-структурированные объекты (типа Лист в листе у вложенного листа есть еще 1 лист)? может есть какой нибудь метод обработки в JSON?
JSON это формат объекта у JavaScript про кащейские листы он знать не знает...

New_Object 2) Не получается получить id-шник у списка объектов объявленных как relationship.
В этих свойствах хранятся не ИДшники, а орефы... Для получения ИД экземпляра нужно использовать метод

Код: vbnet
1.
<объект>.<свойство_relationship>.%Id()
...
Рейтинг: 0 / 0
JSON + Cache
    #38480018
sigmov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: vbnet
1.
<объект>.<свойство_relationship>.%Id()

Лучше
Код: vbnet
1.
<объект>.<свойство>GetObjectId()
...
Рейтинг: 0 / 0
JSON + Cache
    #38480032
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
}

}
test.csp<html>
<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>
...
Рейтинг: 0 / 0
JSON + Cache
    #38480033
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DAiMorДля начала укажите версию Cache.
на счет примеров, сейчас уже есть открытые проекты на Cache, смотрите в их сторону.
Например сервер вакансий

спасибо за ссылку. версия каше 2013.2
...
Рейтинг: 0 / 0
JSON + Cache
    #38480047
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Objectверсия каше 2013.2Обновитесь: такой версии уже нет и не будет.
...
Рейтинг: 0 / 0
JSON + Cache
    #38480080
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_Object2) Не получается получить id-шник у списка объектов объявленных как relationship.
Например,Класс имеет ссылку сам на себя, у него есть некоторое поле в котором он хранит объекты этого же класса в виде отношений. Как получить ID у объекта в этом поле?См. соответствующие методы класса %Library.RelationshipObject .
...
Рейтинг: 0 / 0
JSON + Cache
    #38480137
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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.
[
	{
		"id" : 0,
		"name" : "История",
		"subDiscs" : [{
				"id" : 1,
				"name" : "История часть 1",
				"subDiscs" : [],
				"parent" : 0
			}, {
				"id" : 2,
				"name" : "История часть 2",
				"subDiscs" : [],
				"parent" : 0
			}, {
				"id" : 3,
				"name" : "История часть 3",
				"subDiscs" : [],
				"parent" : 0
			}, {
				"id" : 4,
				"name" : "История часть 4",
				"subDiscs" : [],
				"parent" : 0
			}
		],
		"parent" : null
	}, 
	{
		"id" : 5,
		"name" : "Математика",
		"subDiscs" : [],
		"parent" : null
	}
]


В javascript есть метод stringify которому достаточно передать лист верхнего уровня и он сгенерирует структуру, есть ли такая же штука в каше или надо будет парсить в ручную запросами к базе=)))
...
Рейтинг: 0 / 0
JSON + Cache
    #38480138
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigmovЛучше
Код: vbnet
1.
<объект>.<свойство>GetObjectId()


А чем %Id() провинился?
...
Рейтинг: 0 / 0
JSON + Cache
    #38480150
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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.
[
	{
		"id" : 0,
		"name" : "История",
		"subDiscs" : [{
				"id" : 1,
				"name" : "История часть 1",
				"subDiscs" : [],
				"parent" : 0
			}, {
				"id" : 2,
				"name" : "История часть 2",
				"subDiscs" : [],
				"parent" : 0
			}, {
				"id" : 3,
				"name" : "История часть 3",
				"subDiscs" : [],
				"parent" : 0
			}, {
				"id" : 4,
				"name" : "История часть 4",
				"subDiscs" : [],
				"parent" : 0
			}
		],
		"parent" : null
	}, 
	{
		"id" : 5,
		"name" : "Математика",
		"subDiscs" : [],
		"parent" : null
	}
]



В какой "базе"? Для Каше это не "структура"... Это тупо строка с символами или бинаристрим, что почти одно и то же...

New_ObjectВ javascript есть метод stringify которому достаточно передать лист верхнего уровня и он сгенерирует структуру, есть ли такая же штука в каше или надо будет парсить в ручную запросами к базе=)))
Строку придется разбирать самому...
Если конечно нет соответствующих классовых методов в том же ZEN-пакете...
...
Рейтинг: 0 / 0
JSON + Cache
    #38480179
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
New_ObjectВ javascript есть метод stringify, которому достаточно передать лист верхнего уровня и он сгенерирует структуру JSON.stringify сгенерирует строку
...
Рейтинг: 0 / 0
JSON + Cache
    #38480321
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может есть смысл посмотреть в сторону разработок
Rob Tweed на сайте http://gradvs1.mgateway.com/main/ и не только.
Он вроде эту технологию предлагает и выдвигает упорно.
...
Рейтинг: 0 / 0
JSON + Cache
    #38480339
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здесь все его статьи http://robtweed.wordpress.com/
...
Рейтинг: 0 / 0
JSON + Cache
    #38480495
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем за информацию, теперь стало немного понятнее. =))
...
Рейтинг: 0 / 0
JSON + Cache
    #38480500
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
krvsaА чем %Id() провинился?

Ругается что это Oref =)) %Id() это первое, что пришло в голову =)
...
Рейтинг: 0 / 0
JSON + Cache
    #38484482
VArtem
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Смотрите, а вот если я открыл объект, у которого есть связи с другими объектами, а у тех тоже и тп:
s person = ##class(Person).%OpenId(1)
Если делаю так, то выводит чуть-ли не пол базы из-за связей:
d ##class(%ZEN.Auxiliary.jsonProvider).%ObjectToJSON(person)
Можно как-то ограничить глубину и что означает параметр pLevel в методе. Или создавать самому промежуточный объект (proxyObject) и его выводить...
...
Рейтинг: 0 / 0
JSON + Cache
    #38484850
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VArtemМожно как-то ограничить глубину и что означает параметр pLevel в методе.
Так то может и есть тот самый ограничитель?
...
Рейтинг: 0 / 0
JSON + Cache
    #38485145
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, pLevel используется для форматирования
Код: vbnet
1.
 Set tIndent="", $P(tIndent,tTab,pLevel+1)="" Write tLF_tIndent 
...
Рейтинг: 0 / 0
JSON + Cache
    #38485255
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день! всем спасибо, за примеры отдельное спасибо!=) сделал все по образу и подобию=)
Возник новый вопрос чисто "косметический"=))) Хочу сделать добавление новых данных и тут же выгрузку их в клиентскую часть.

что работает:

У меня выгрузка из базы записана в javascript как в примере только по готовности страницы.

Код: javascript
1.
2.
3.
4.
   $(document).ready(function()
   {
     #(##class(%ZEN.Auxiliary.jsonProvider).%WriteJSONFromObject("myJSON","demo.test","GetObject",,,"aeloq"))#
   });


все работает.

и продублировал этот же метод на кнопку добавления нового элемента. В результате данные в базу добавляются, но выгруженный список остается без изменений. стоит обновить страницу и все отображается нормально =) причем если 2 элемента все без изменений.

Следовательно вопрос, почему так? Как это исправить? P.S. вешать костыль принудительного обновления страницы не хочется =) или это будет не костыль? и только там можно исправить? Заранее спасибо=)
...
Рейтинг: 0 / 0
JSON + Cache
    #38485753
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
}

}
test.csp<html>
<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>
...
Рейтинг: 0 / 0
JSON + Cache
    #38485758
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VArtemИли создавать самому промежуточный объект (proxyObject) и его выводить...Или использовать SQL, если структура позволяет.
...
Рейтинг: 0 / 0
JSON + Cache
    #38486637
New_Object
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servit,

еще раз спасибо!=) все получилось!=)
...
Рейтинг: 0 / 0
24 сообщений из 24, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / JSON + Cache
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]