第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法

简介: 第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法

第三十三章 使用 CSP 进行基于标签的开发 - 使用Hyperevents #server和#call调用服务器端方法

使用Hyperevents #server#call调用服务器端方法

hyperevent是我们对web浏览器事件的CSP扩展,是一种用于创建交互式web动作的web开发技术。使用hyperevents,可以在Caché服务器上运行类的方法来响应客户端web浏览器中的事件,而无需在客户端重新加载HTML页面。在更广阔的世界里,这种能力通常被称为AJAXCaché 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))#


相关文章
|
5天前
|
网络协议 Ubuntu Linux
gpg从公钥服务器接收失败(gpg: keyserver receive failed: Server indicated a failure)
通过上述步骤,大多数情况下应该能够解决GPG从公钥服务器接收失败的问题。如果问题依旧存在,可能需要进一步调查与公钥服务器相关的更深层次的技术问题,或者考虑在相关社区论坛寻求帮助。
10 1
|
6天前
|
网络安全 Docker 容器
VScode远程服务器之远程 远程容器 进行开发(五)
VScode远程服务器之远程 远程容器 进行开发(五)
15 1
|
9天前
|
网络协议 Windows
Windows Server 2019 DHCP服务器搭建
Windows Server 2019 DHCP服务器搭建
|
9天前
|
网络协议 定位技术 Windows
Windows Server 2019 DNS服务器搭建
Windows Server 2019 DNS服务器搭建
|
15天前
|
弹性计算 安全 Linux
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
阿里云国际版使用ping命令测试ECS云服务器不通的排查方法
|
16天前
|
Java PHP
PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。理解其垃圾回收机制有助于开发高效稳定的PHP应用。
【10月更文挑战第1天】PHP作为广受青睐的服务器端脚本语言,在Web开发中占据重要地位。其垃圾回收机制包括引用计数与循环垃圾回收,对提升应用性能和稳定性至关重要。本文通过具体案例分析,详细探讨PHP垃圾回收机制的工作原理,特别是如何解决循环引用问题。在PHP 8中,垃圾回收机制得到进一步优化,提高了效率和准确性。理解这些机制有助于开发高效稳定的PHP应用。
35 3
|
3天前
|
前端开发 Docker 容器
主机host服务器和Docker容器之间的文件互传方法汇总
Docker 成为前端工具,可实现跨设备兼容。本文介绍主机与 Docker 容器/镜像间文件传输的三种方法:1. 构建镜像时使用 `COPY` 或 `ADD` 指令;2. 启动容器时使用 `-v` 挂载卷;3. 运行时使用 `docker cp` 命令。每种方法适用于不同场景,如静态文件打包、开发时文件同步及临时文件传输。注意权限问题、容器停止后的文件传输及性能影响。
|
28天前
|
Java
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
java小工具util系列5:java文件相关操作工具,包括读取服务器路径下文件,删除文件及子文件,删除文件夹等方法
43 4
|
6天前
|
Kubernetes 网络安全 容器
VScode远程服务器进行开发(三)
VScode远程服务器进行开发(三)
15 0
|
6天前
|
弹性计算 数据安全/隐私保护 Windows
阿里云国际版无法远程连接Windows服务器的排查方法
阿里云国际版无法远程连接Windows服务器的排查方法