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


    第三十五章 使用 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>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

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

    <html>
    <head>
    <script language="JavaScript">
    function LoadEvent()
    {
       var value='#(%session.Data("value"))#';
    }
    </script>
    </head>
    <body onload=LoadEvent();>
    </body>
    </html>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

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

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

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

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

  • 相关阅读:
    碉堡!“万物皆可分”标记模型上线「GitHub 热点速览」
    能让你效率翻倍的文字扫描识别软件有哪些?这几款就很不错
    CCKS2023:基于企业数仓和大语言模型构建面向场景的智能应用
    代码随想录——最长递增子序列的个数
    (WebFlux)003、多数据源R2dbc事务失效分析
    4大软件测试策略的特点和区别(单元测试、集成测试、确认测试和系统测试)
    win10 + VS2015 + libtorch 环境搭建
    微信小程序使用 npm 安装第三方包
    ActiveReportsJs 账票印刷
    [JS基础] 带你深入了解JS原型
  • 原文地址:https://blog.csdn.net/yaoxin521123/article/details/127663235