第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法
文章目录
第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法
使用Hyperevents #server
和#call
调用服务器端方法
hyperevent
是我们对web
浏览器事件的CSP扩展,是一种用于创建交互式web
动作的web
开发技术。使用hyperevents
,可以在Caché
服务器上运行类的方法来响应客户端web浏览器中的事件,而无需在客户端重新加载HTML
页面。在更广阔的世界里,这种能力通常被称为AJAX
。Caché hyperevents
在许多情况下非常有用,特别是在数据库应用程序中,可能希望对数据库执行验证或搜索功能,而不必重新加载和重新格式化整个网页。通常,超级事件是使用XMLHttpRequest
实现的。
如果正在使用类开发CSP页,则需要调用..HyperEventHead
方法在< Head >
部分的输出期间加载hyperevents
所需的JavaScript
。
使用#server调用服务器端方法
在CSP
文件中,可以使用#server
指令调用服务器端方法。可以在任何允许JavaScript
的地方使用这个指令。
#server
指令的语法是:
#server(classname.methodname(args,...))#
其中classname
是服务器端Caché
类的名称,methodname
是该类中方法的名称。args
是传递给服务器端方法的客户端JavaScript
参数列表。注意,开始和结束#符号之间的所有代码必须都在一行上。
例如,要调用Caché
类MyPackage
中名为Test
的服务器端方法,请使用:
<script language="JavaScript">
function test(value)
{
// invoke server-side method Test
#server(MyPackage.Test(value))#;
}
</script>
CSP
编译器将每次出现的#server
指令替换为调用服务器端方法的JavaScript
代码。
从给定的CSP
页面,可以调用属于为其生成的类的方法,方法使用…方法名语法。例如:
#server(..MyMethod(arg))#
使用#call
调用服务器端方法
同步性由被调用的方法、#server
或#call
决定。#server
是同步的;##call
是异步的。
同步调用可能会导致UI
响应明显暂停(挂起)。然而,异步调用有其自身的优点和问题。例如,如果用户在网页上输入一个值,页面不会立即更新;更新时,用户可能已经移动到另一个页面。
#server同步。
当调用服务器端方法时,#server
向客户端返回一个值(因为客户端正在等待)*,*
返回JavaScript
供客户端执行
#call
是异步的:当调用服务器端方法时,#call
不等待返回值。
相反,应用程序依赖于服务器发回的JavaScript
在客户机上执行任何需要的操作。
当使用异步##call
时,在进行多个连续调用时必须非常小心。
如果在前一个方法完成之前通过#call
调用了一个方法,web
服务器可能会决定取消你前一个方法调用。
或者用户可能在JavaScript
执行之前转移到另一个页面,因此JavaScript
在错误的页面上执行,从而导致错误。
因此,大多数情况下,在启动可能需要一段时间的工作时使用#call
,并提供指向显示长时间运行的job
状态的另一个页面的链接。
和#server
一样,可以在任何允许JavaScript
的地方使用#call
指令。
#call
指令的语法是:
#call(classname.methodname(args,...))#
其中classname
是服务器端Caché
类的名称,methodname
是类中的方法的名称。
args
是传递给服务器端方法的客户端JavaScript
参数列表。
注意,在#号开始和结束之间的所有代码都必须在一行中。
例如,要在Caché
类MyPackage
中调用一个名为Test
的服务器端方法,使用:
<script language="JavaScript">
function test(value)
{
// invoke server-side method Test
#call(MyPackage.Test(value))#;
}
</script>
CSP
编译器用调用服务器端方法的JavaScript
代码替换#call
指令的每次出现。
从给定的CSP
页面,可以使用..
调用属于为其生成的类的方法。
MethodName
语法。
例如:
#call(..MyMethod(arg))#
相关文章
- Windows Server实例防火墙策略的配置方法
- Sql Server-使用Sql Server自带的分词功能实现字段关键词提取(分词能力很低,慎用)
- Sql server在另一台服务器,在Visual Studio 中没问题,IIS中 提示“在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误。。。。”
- SQL Server 2008下日志清理方法 2
- SQL Server Cursor – When (Not) to use them?
- 解决Navicat连接MySQL时“Client does not support authentication protocol requested by server; consider upgrading MySQL client”的问题
- is-a,has-a,like-a是什么 sql server中,N''表示什么意思? 关于SQL SERVER的N前缀的理解
- SQL Server 占用内存太高,查找占用内存高以及影响其性能的sql语句及解决方法
- 浅析 SQL Server 的 CROSS APPLY 和 OUTER APPLY 查询 - 第二部分
- 误删Server后Tomcat服务器报错The Tomcat server configuration at ServersTomcat v8.5 Server at
- MS SQL SERVER 数据库日志压缩方法与代码
- ubuntu下TFTP Server 的安装和使用方法
- 50种方法优化SQL Server数据库查询
- SQL Server 并行操作优化,避免并行操作被抑制而影响SQL的执行效率
- windows server 2008 不能执行bat
- GIS之家小专栏,相关文章尾部提供源码demo下载,订阅赠送arcgis10.5整套安装包(arcgis、arcgis server以及portal),包括破解许可永久期限
- nginx配置文件nginx.conf 不包括server节点
- sql server 登录名和用户名的区别和联系
- 人人都是 DBA(IV)SQL Server 内存管理
- 滚动载入server端内容——样例
- SQL Server数据库基础的级联删除、级联更新与三层架构之窥
- 最小配置启动SQL SERVER,更改SQL Server最大内存大小导致不能启动的解决方法
- (4.23)sql server区分大小写的检索
- SQL Server 运行状况监控SQL语句
- (4.16)sql server迁移DB文件(同一DB内)
- 如何配置最大工作线程数 (SQL Server Management Studio)
- Sql Server-增加字段、修改字段、修改类型、修改默认值 ALTER
- sql server 每日备份:新手遇到的问题解决方法(一)