美文网首页
第三十五章 使用 CSP 进行基于标签的开发 - 使用服务器端方

第三十五章 使用 CSP 进行基于标签的开发 - 使用服务器端方

作者: Cache技术分享 | 来源:发表于2022-11-02 09:02 被阅读0次

第三十五章 使用 CSP 进行基于标签的开发 - 使用服务器端方法的提示

使用服务器端方法的提示

web页面调用服务器端方法的能力是一个功能强大的特性。
但是,在应用程序中使用服务器端方法时,需要记住一些事情。

注意:在本节中,对于#server所提到的任何内容也适用于#call,除非另有说明。

#server#call指令都可以从web浏览器中的JavaScript调用Caché服务器上的方法。
这使得CSP能够做一些事情,比如在移出字段时验证字段,而不是等待表单的提交,从而向用户提供即时反馈。
在使用#server语法时,应该注意以下几个因素——否则可能会产生执行非常慢的应用程序,或者在某些情况下根本无法工作。

使用#server时要记住两个基本规则:

  1. 永远不要在网页的onload事件中使用#server
    这可能会失败,但在Caché中生成web页面时,生成数据更快、更容易。
  2. 不要在网页的onunload事件中使用#server
    使用尽可能少的#server调用,并在每个调用中做尽可能多的工作,因为它们开销很大,涉及到从浏览器到服务器的往返。

这不是一个好主意的原因是,当从Caché生成页面时,需要在onload事件中运行的任何代码都可以更快、更容易地运行。
例如,假设为JavaScript变量设置一个初始值,以便稍后在页面中使用(可能在#server调用中)。
所以你现在正在做的是:

<html>
<head>
<script language="JavaScript">
function LoadEvent()
{
   var value=#server(..GetValue())#;
}
</script>
</head>
<body onload=LoadEvent();>
</body>
</html>
<script language="Cache" method="GetValue" returntype="%String">
   Quit %session.Data("value")
</script>

但是,完全没有必要调用#server,因为JavaScript变量的值在生成页面时已经在%session.Data("value")中知道了。
因此,最好这样写:

<html>
<head>
<script language="JavaScript">
function LoadEvent()
{
   var value='#(%session.Data("value"))#';
}
</script>
</head>
<body onload=LoadEvent();>
</body>
</html>

无论你在做什么,同样的技巧都适用,如果你在文档加载时更新表单元素的值,那么在页面生成时将其更改为将值放入,例如:

<input type="text" name="TextBox" value='#(%request.Get("Value"))#'>

在页面的onload事件中不需要使用#server

因为页面正在卸载,所以很难知道从Caché返回的JavaScript是否会被执行,而实际的行为取决于浏览器。
另外,如果用户关闭了机器,则永远不会得到onunload事件。
应用程序需要能够在任何情况下处理这种可能性,可能是通过在%session对象上使用超时。
例如,可以将onunload #server逻辑代码移动到用户单击的下一个CSP页面的开头。

相关文章

网友评论

      本文标题:第三十五章 使用 CSP 进行基于标签的开发 - 使用服务器端方

      本文链接:https://www.haomeiwen.com/subject/xjgstdtx.html