第三十四章 使用 CSP 进行基于标签的开发 - Hyperevent例子
Hyperevent例子
本节展示了一些超事件Hyperevent
例子的示例;
也就是说,使用#server
和#call
指令来执行服务器操作以响应客户机事件。
例如:有一个用于向数据库添加新客户的表单。
一旦输入了客户名称,应用程序就会进行检查,以确保该客户尚未在数据库中。
下面的表单定义在输入内容更改时调用服务器端Find
方法。
<form name="Customer" method="POST">
Customer Name:
<input type="Text" name="CName"
onChange=#server(..Find(document.Customer.CName.value))# >
</form>
在这种情况下,Find
方法可以定义在相同的CSP
文件中:
<script language="Cache" method="Find" arguments="name:%String">
// test if customer with name exists
// use embedded SQL query
New id,SQLCODE
&sql(SELECT ID INTO :id FROM MyApp.Customer WHERE Name = :name)
If (SQLCODE = 0) {
// customer was found
// send JavaScript back to client
&js<alert('Customer with name: #(name)# already exists.');>
}
</script>
该方法通过返回JavaScript
执行与客户机通信。
每当调用服务器端方法时,它写入主体设备的任何输出都被发送回客户机。
在那里,它被转换为JavaScript
函数,并由客户端页面在其上下文中执行。
例如,如果一个服务器端方法执行以下代码行:
Write "CSPPage.document.title = 'New Title';"
然后将以下JavaScript
发送到客户端并执行:
CSPPage.document.title = 'New Title';
在本例中,这会将浏览器中显示的标题更改为New title
。
任何有效的JavaScript
都可以以这种方式发送回客户机。
注意,必须放置一个回车符(使用!
字符),否则浏览器无法执行它。
为了更容易地从服务器方法返回JavaScript
, ObjectScript
使用&js<>
指令支持嵌入的JavaScript
。
这是一种特殊的语言构造,它允许在ObjectScript
方法中包含JavaScript
行。
当编译包含嵌入式JavaScript
的方法时,&js<>
指令的内容被转换为适当的Write命令语句。
嵌入式JavaScript
可以使用#()#
指令引用ObjectScript
表达式。
例如,Caché
方法包含以下内容:
Set count = 10
&js<
for (var i = 0; i < #(count)#; i++) {
alert('This is pleasing!');
}
>
等价于:
Set count = 10
Write "for (var i = 0; i < ", count, "; i++) {",!
Write " alert('This is pleasing!');",!
Write "}",!
当从客户端调用时,该方法将a pleasing alert box 10 times
警告框。
在CSP类中使用#server
要在CSP
类中使用超事件和Javascript
,必须显式调用超事件代理文件。
如下例所示,将#(..HyperEventHead())#
放在<head>
结束标记的上方。
Class esl.csptest Extends %CSP.Page [ ProcedureBlock ]
{
ClassMethod OnPage() As %Status
{
&html<<html>
<head>
<script language=javascript>
function onServer()
{
alert(#server(..ServerMethod())#);
}
</script>
#(..HyperEventHead())#
</head>
<body>
<input type=button value="click here" onclick='onServer()' />
</body>
</html>>
Quit $$$OK
}
ClassMethod ServerMethod()
{
quit "from server"
}
}
标签:Write,客户机,JavaScript,Hyperevent,方法,CSP,第三十四章
From: https://www.cnblogs.com/yaoxin521123/p/16849773.html