powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Zen и JavaScript
20 сообщений из 20, страница 1 из 1
Zen и JavaScript
    #34909677
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день.
Такой вопрос. Есть отдельный файл JavaScript *.js, в котором описаны некоторые функции. Как осуществить вызов этих функций из клиентских методов zen-страницы? Возможно ли это? Просто есть функции, которые используются на множестве страниц.
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34909735
Фотография u78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подключить js файл к странице можно так (если я правильно понял вопрос)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<html>
<head>
<script language="JS" src="common.js"></script>
<script language="JS">
  //собственный код
</script>
</head>
<body>
</body>
</html>
После этого можно вызывать все функции файла common.js
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34912629
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так, этот вопрос пока отложим. Возник новый более насущный. Может, не очень умный, но я только начал знакомиться с Cache, ZEN и др.
Есть станица на которой пользователь может сменить пароль. Необходимо, чтобы перед отправкой данных на сервер проверялась корректность ввода параметров по шаблону. И, если ввод не корректный, то отправки данных не происходит, а выводится сообщение об ошибке.
Код: plaintext
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
/// Created using the page template: Default
Class Dilers.ChangePassword Extends %ZEN.Component.page
{

/// Class name of application this page belongs to.
Parameter APPLICATION = "Dilers.Dilers";

/// Displayed name of this page.
Parameter PAGENAME = "ChangePassword";

/// Domain used for localization.
Parameter DOMAIN = "Dilres";

property IsValidLogin as %ZEN.Datatype.boolean;

/// This Style block contains page-specific CSS style definitions.
XData Style
{
}

/// This XML block defines the contents of this page.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">

<html>
<br/>
<h3 align="center">Смена пароля пользователя</h3>
</html>
<form align="center" id="chngPswForm" OnSubmitForm="SubmitForm">
<hgroup align="center">
<html><br/><br/></html>
<vgroup>
<label align="right" id="lgnLabel" label="Код пользователя"/>
<label align="right" id="oldPswLabel" label="Старый пароль"/>
<label align="right" id="newPswLabel" label="Новый пароль"/>
<label align="right" id="cnfPswLabel" label="Подтверждение пароля"/>
</vgroup>
<vgroup>
<text align="center" id="login"/>
<password id="oldPassword" />
<password id="newPassword" />
<password id="cnfPassword" />
</vgroup>
</hgroup>
<button align="center" caption="   OK   " id="button" onclick="zenPage.BtnClick();"/>
<submit align="center" action="save" caption="Сохранить"/>
</form>
</page>
}

/// CheckLgn Проверка логина по шаблону
Method CheckLgn(lgn) As %ZEN.Datatype.boolean [ Language = javascript ]
{
	try 
	{
		// TODO: implement
		//obj = zenPage.getComponentById("login");
		reg = /^[A-Z]{ 1 , 3 }-\d{ 1 ,}$/
		if (!reg.test(lgn)) result = false;
		else result = true;
		return result
	}
	catch (ex) {
		zenExceptionHandler(ex,arguments);
	}
}

/// CheckPsw Проверка пароля по шаблону
Method CheckPsw(psw) As %ZEN.Datatype.boolean [ Language = javascript ]
{
	try 
	{
		// TODO: implement
		re1=/^\S*[^a-z\s]\S*[^a-z\s]\S*$/i
		re2 = /[а-я]/i 
		if(!(psw.length> 7  && re1.test(psw) && !re2.test(psw))) 
		result = false
		else result = true
		return result
	}
	catch (ex) {
		zenExceptionHandler(ex,arguments);
	}
}

/// BtnClick
Method BtnClick() [ Language = javascript ]
{
	try 
	{
		// TODO: implement		
		obj1 = zenPage.getComponentById("login");
		obj2 = zenPage.getComponentById("oldPassword");
		obj3 = zenPage.getComponentById("newPassword");
		obj4 = zenPage.getComponentById("cnfPassword");
		if (!zenPage.CheckLgn(obj1.value)) alert('Неверный формат поля "Код пользователя"')
		if (!zenPage.CheckPsw(obj2.value)) alert('Неверный формат поля "Старый пароль"')
		if (!zenPage.CheckPsw(obj3.value)) alert('Неверный формат поля "Новый пароль"')
		if (!zenPage.CheckPsw(obj4.value)) alert('Неверный формат поля "Подтверждение пароля"')
		if (obj3.value != obj4.value) alert('Новый пароль и его подтверждение не совпадают')
	 	if (zenPage.CheckLgn(obj1.value)&&zenPage.CheckPsw(obj2.value)&&zenPage.CheckPsw(obj3.value)&&zenPage.CheckPsw(obj4.value)&&(obj3.value == obj4.value)) alert('Формат Login и Password верный\n\tИдет проверка.');
		
	}
	catch (ex) {
		zenExceptionHandler(ex,arguments);
	}
}

ClassMethod SubmitForm(pSubmit as %ZEN.Submit) As %Status
{
	//Здесь нужно осуществить проверку корректности ввода
        //Отправить данные на сервер в случае корректного ввода
        //Вывести сообщение об ошибке в случае некорректного ввода
}

}

Чистая javascript-проверка BtnClick() проблем не вызывает. А вот как совместить Cache ObjectScript и javascript-проверку
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34919154
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Уважаемые, очень прошу помочь новичку! "Толи лыжи не едут, то ли я ..."
Есть простенькая страница авторизации пользователя. Необходимо при правильном вводе логина и пароля перенаправить на другую страницу. Но у меня никак не получается выполнить даже такие простые действия...
Код: plaintext
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.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
/// Created using the page template: Default
Class Dilers.Authorization Extends %ZEN.Component.page
{

/// Class name of application this page belongs to.
Parameter APPLICATION = "Dilers.Dilers";

/// Displayed name of this page.
Parameter PAGENAME = "Authorization";

/// Domain used for localization.
Parameter DOMAIN = "Dilers";

/// This Style block contains page-specific CSS style definitions.
XData Style
{
<style type="text/css">
#auth 
{
	border-top: 1px solid black;
	border-bottom: 1px solid black;
	border-right: 1px solid black;
	border-left: 1px solid black;
	background-color:#f0f0f0;
}
</style>
}

/// This XML block defines the contents of this page.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="">
<form id="authForm" name="authForm" align="center" OnSubmitForm="SubmitForm">
<spacer height="20"/>
<html>
<h3 align="center">Авторизации пользователя</h3>
</html>
<hgroup id="auth" align="center" labelPosition="left">
<spacer height="50"/>
<vgroup>
<label align="right" id="lgnLabel" label="Код пользователя" />
<label align="right" id="pswLabel" label="Пароль пользователя"/>
</vgroup>
<vgroup>
<text id="login" name="login"/>
<password id="password" name="password"/>
</vgroup>
</hgroup>
<submit align="center" action="ok" caption="   OK   "/>
 </form>
</page>
}

/// CheckLgn - Проверка логина на соответсвие шаблону. Осуществляется на клиенте.
Method CheckLgn(lgn) As %ZEN.Datatype.boolean [ Language = javascript ]
{
	try 
	{
		// TODO: implement
		reg = /^[A-Z]{ 1 , 3 }-\d{ 1 ,}$/
		if (!reg.test(lgn)) result = false;
		else result = true;
		return result
	}
	catch (ex) {
		zenExceptionHandler(ex,arguments);
	}
}

/// CheckPsw - проверка пароля на соответсвие шаблону. Осуществляется на клиенте.
Method CheckPsw(psw) As %ZEN.Datatype.boolean [ Language = javascript ]
{
	try 
	{
		// TODO: implement
		re1=/^\S*[^a-z\s]\S*[^a-z\s]\S*$/i
		re2 = /[а-я]/i 
		if(!(psw.length> 7  && re1.test(psw) && !re2.test(psw))) 
		result = false
		else result = true
		return result
	}
	catch (ex) {
		zenExceptionHandler(ex,arguments);
	}
}

// Как реализовать?
ClassMethod SubmitForm(pSubmit as %ZEN.Submit) As %Status
{
      //Если логин и пароль соответсвую шаблону, редирект на Page.cls
      //Иначе сообщение об ошибке
      quit $$$OK
}

}

Подскажите, пожалуйста, как это сделать.
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34919698
13-й Пилигрим
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неужели же нету специалистов по ZEN?
Почему у меня не работает даже простое перенаправление?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
ClassMethod SubmitForm(pSubmit As %ZEN.Submit) As %Status
{
	if (pSubmit.%GetValue("login")="123")
	{s %csp.%recuest.Redirect = "Page.cls"
	quit  1 }
	quit  1 
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34919897
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаток ZEN, просто бросилось в глаза: Redirect и ServerSideRedirect
суть методы совсем другого класса. Поищите в документации "Class %CSP.Response".
А знатоки ZEN живут известно где: http://groups.google.com/group/InterSystems-ZEN
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34920096
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovНе знаток ZEN, просто бросилось в глаза: Redirect и ServerSideRedirect
суть методы совсем другого класса. Поищите в документации "Class %CSP.Response".
А знатоки ZEN живут известно где: http://groups.google.com/group/InterSystems-ZEN

Можно так:

Class ASTUE.ENERGY Extends %ZEN.application
{

/// This is the name of this application.
Parameter APPLICATIONNAME = "ENERGY";

/// This is the URL of the main starting page of this application.
Parameter HOMEPAGE = "ASTUE.StartForm.cls";

/// This Style block contains application-wide CSS style definitions.
XData Style
{
<style type="text/css">
body {
background: #F0F0FF;
}
</style>
}

// Управление сессией и переход на стартовую страницу

ClassMethod OnPreHTTP() As %Boolean [ ZenMethod ]
{

D %session.Login($zu(67,15,$j),$zu(67,15,$j),1)
Set %response.Redirect =..#HOMEPAGE
Quit $$$OK
}

}

А можно и так:

if (status == '1')
{
window.open("ASTUE.MainForm.cls", "","status=no,resizable=yes,titlebar=no,fullscreen=yes");
window.close();
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34920677
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А javascript в ZENе уже не работает?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34920770
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaА javascript в ZENе уже не работает?
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

А это разве не javascript который в ZENе :


if (status == '1')
{
window.open("ASTUE.MainForm.cls", "","status=no,resizable=yes,titlebar=no,fullscreen=yes");
window.close();
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34920864
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Просто меня удивил вопрос автора "Как мне сделать в ZENе?"...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34921466
AlexKB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsaПросто меня удивил вопрос автора "Как мне сделать в ZENе?"...
----------
Cache for Windows NT (Intel) 5.0.20 (Build 6305) Fri Sep 16 2005 11:54:10 EDT

Cache форум должен преследовать цели помощи один одному, а не добивать друг друга, как на других форумах. Это шахматистам простительно, а на форуме Cache давайте будем более деликатны и терпимы друг к другу. Нас и без того так мало.

Я так считаю.
...
Рейтинг: 0 / 0
Zen и JavaScript
    #34924031
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пока я не видел повода считать, что кто-то кого-то бьет, а уж тем более "добивает".
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35453406
zen user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Имеется два компонента dataCombo. Необходимо, чтобы на изменение первого менялось содержимое второго через запрос, но в процессе возникает ошибка:
Error deserializing page: <ILLEGAL VALUE>%ZENDeserialize+91^%ZEN.Component.dataCombo.2
Property:
Value:

что не так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<dataCombo id="test1" sql="select id, Name from zen.test1" onchange="zenPage.Load();"/>
<dataCombo id="test2"/> 
...
...
...

Method Load() [ Language = javascript ]
{
	var test2=zenPage.getComponentById('test2');
	test2.setProperty('sql',"select Name from zen.test2");
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35454498
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zen userИмеется два компонента dataCombo. Необходимо, чтобы на изменение первого менялось содержимое второго через запрос, но в процессе возникает ошибка:
Error deserializing page: <ILLEGAL VALUE>%ZENDeserialize+91^%ZEN.Component.dataCombo.2
Property:
Value:

что не так?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<dataCombo id="test1" sql="select id, Name from zen.test1" onchange="zenPage.Load();"/>
<dataCombo id="test2"/> 
...
...
...

Method Load() [ Language = javascript ]
{
	var test2=zenPage.getComponentById('test2');
	test2.setProperty('sql',"select Name from zen.test2");
}

Какая версия Cache?
Скорее всего ошибка возникает из-за большого количества компонент на странице. Как вы знаете, в ZEN при выполнении ZEN-метода информация об объекте чей метод вызывают, всех его потомках и предков кодируется в специальном виде и отправляется на сервер, там по этой информации строится дерево объектов на пространстве которых уже и выполняется метод, далее результат возвращается на клиента. Так вот, при выполнении метода страницы происходит передача информации обо всех объектов страницы в виде одной большой строки. Соответственно при большой длине эта строка не корректно обрабатывается на сервере и происходит такая ошибка.
Попробуйте для пробы исключить все компоненты, не влияющие на тестируемый функционал. Если ошибка пропадёт, то у вас однозначно описываемая выше проблема.
Насколько мне известно в 2008.2 этот баг поправили.
Если нет возможности перейти на Field Test 2008.2 можно порекомендовать следующее:
1. Уменьшить количество компонент на странице, например разбив её на две.
2. Реализовать необходимый функционал не методом, а классметодом страницы в который передаётся Id компонента. В этом случае не будет доступен %this и другие компоненты страницы, и изменение компоновки видимо придётся добиваться встроенным JavaScript.
3. Если на странице присутствуют собственные компоненты, рассмотреть возможность уменьшения количества их свойств и объём их содержимого.
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35454521
zen user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
cache 2008.1.0.401.0
на новой странице с этими двумя всего компонентами и одним методом ошибка таже...
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35454573
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
zen usercache 2008.1.0.401.0
на новой странице с этими двумя всего компонентами и одним методом ошибка таже...
А если заменить select Name from zen.test2 на select id, Name from zen.test2 ?
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35454593
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To zen user
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<dataCombo id="test1" sql="select id, Name from zen.test1" onchange="zenPage.Load();"/>
<dataCombo id="test2"/> 

Method Load() [ ZenMethod ]
{
	set test2=%page.%GetComponentById("test2") 
	set test2.sql="select Name from zen.test2"
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35454639
zen user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitTo zen user
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<dataCombo id="test1" sql="select id, Name from zen.test1" onchange="zenPage.Load();"/>
<dataCombo id="test2"/> 

Method Load() [ ZenMethod ]
{
	set test2=%page.%GetComponentById("test2") 
	set test2.sql="select Name from zen.test2"
}

Вроде работает, но нужного результата нет.
попробовал вот так, но это работает только со второго раза, может кто знает как сделать чтоб работало как надо
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<dataCombo id="test1" sql="select id, Name from zen.Region" onchange="zenPage.MyMethod();"/>
<dataCombo id="test2"/> 


Method MyMethod() [Language = JavaScript]
{
	zenPage.Load();
	zenPage.getComponentById('test2').refreshContents();
}

Method Load() As %Status [ ZenMethod ]
{
	set rId=%page.%GetValueById("test1")
	set test2=%page.%GetComponentById("test2") 
	set test2.sql="select Name from zen.City where Region="_rId
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35455431
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<dataCombo id="Region" sql="select id,Name from zen.Region" onchange="zenPage.Load();"/>
<dataCombo id="City" 
   sql="select id,Name from zen.City where Region=?" 
   editable="true" 
   comboType="timer" 
   searchKeyLen="10"
/> 
...
Method Load() [ ZenMethod ]
{
	&js<
	var city=zenPage.getComponentById('City');
	city.clearCache();
	city.setValue(zenPage.getComponentById('Region').value);
	city.showDropdown();
	>
}
...
Рейтинг: 0 / 0
Zen и JavaScript
    #35456257
zen user
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
servitПопробуйте так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
<dataCombo id="Region" sql="select id,Name from zen.Region" onchange="zenPage.Load();"/>
<dataCombo id="City" 
   sql="select id,Name from zen.City where Region=?" 
   editable="true" 
   comboType="timer" 
   searchKeyLen="10"
/> 
...
Method Load() [ ZenMethod ]
{
	&js<
	var city=zenPage.getComponentById('City');
	city.clearCache();
	city.setValue(zenPage.getComponentById('Region').value);
	city.showDropdown();
	>
}


это немного, но все равно спасибо всем за помощь
Сделал так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<dataCombo id="test1" sql="select id, Name from zen.Region" onchange="zenPage.MyMethod();"/>
<dataCombo id="test2"/> 
...
Method MyMethod() [Language = JavaScript]
{
	zenPage.getComponentById('test2').clearCache();
	zenPage.Load();	
}

Method Load() [ ZenMethod ]
{
	set rId=%page.%GetValueById("test1")
	set test2=%page.%GetComponentById("test2") 
	set test2.sql="select Name from zen.City where Region="_rId
}
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Zen и JavaScript
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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