• 第三十五章 使用 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页面的开头。

  • 相关阅读:
    敏捷开发模式下如何快速提升产品质量
    让Easysearch运行在LoongArch(3C5000L)上
    Linux网络部分
    在c#中使用CancellationToken取消任务
    在OpenCloudOS使用snap安装.NET 6
    web渗透工具
    app自动化测试(Android)
    【模方ModelFun】实景三维建模和修模4.0.7最新版安装包以及图文安装教程
    论文阅读 (67):Sparse and Imperceptible Adversarial Attack via a Homotopy Algorithm
    [iOS]App Store Connect添加银行卡时的CNAPS代码查询
  • 原文地址:https://blog.csdn.net/yaoxin521123/article/details/127663235