首页 > 其他分享 >第三十二章 使用 CSP 进行基于标签的开发 - 服务器端方法

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

时间:2022-10-31 09:00:22浏览次数:60  
标签:HTTP 服务器端 表单 AJAX 提交 CSP 第三十二章

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

CSP提供了两种从HTML客户机调用服务器端方法的技术。

  • 使用HTTP提交机制。
  • 使用超事件,#server(同步)或#call(异步)。
    也可以使用%CSP.PageHyperEventCall()方法。

使用HTTP Submit的优点是客户端编程简单,不需要客户端组件。
它的缺点是在方法调用之后由客户机重新绘制页面,并且服务器端编程更加困难。

如果使用超级事件,#SERVER#CALL是使用XMLHttpRequest来实现的。#Call是异步的:如果(作为用户)在网页上输入值,则该页面不会立即更新;在更新时,可能已移动到另一个页面。#SERVER是同步的;页面在从调用返回时立即更新。

请注意,同步XMLHttpRequest已被许多浏览器弃用,通常情况下,移动趋势是只支持异步XMLHttpRequest.

HTTP提交和超级事件将在以下各节中进一步描述。

Caché and AJAX

缩写AJAX通常用来指代一组技术,这些技术允许从服务器更新客户端页面的数据,而不必请求新的浏览器页面。Caché超链接允许AJAX交互,而不需要程序员处理所有与服务器的通信。允许AJAX事务的两种方式:

  1. 对于CSP,使用#server()#call()命令允许从客户端直接调用服务器端方法。(也可以使用%CSP.PageHyperEventCall()方法。)
  2. 对于Zen,程序员可以定义ZenMethods来处理客户端-服务器交互。这些可能是同步的,也可能是异步的,具体取决于方法签名:

同步AJAX请求的签名

Method XYZ(arg) as %Status [ZenMethod]    

异步AJAX请求的签名

Method XYZ() [ZenMethod]              

用Ajax实现并行处理

由于^%cspSession全局节点上的锁,对CSPAJAX请求在服务器上按顺序处理。要使AJAX请求能够并行处理,如果正在使用的应用程序没有在会话全局/对象中设置任何内容(因此只读),可以使用%CSP.Session.Unlock()方法为该会话和%Session.Lock解锁该会话的CSP全局。

通过HTTP提交调用服务器端方法

使用HTTP提交调用服务器代码只需要很少的浏览器功能。对于拥有广泛受众并且必须支持多种浏览器的应用程序来说,这是一种很好的技术。使用HTTP提交时,用户每次单击提交按钮时都会重新显示请求的页面。

可以通过以下方式处理HTTP提交:

  1. 提供包含提交按钮的HTML表单:
<form name="MyForm" action="MyPage.csp" method="GET">
User Name: <input type="TEXT" name="USERNAME"><br>
<input type="SUBMIT" name="BUTTON1" value="OK">
</form>

它定义了一个简单的表单,其中包含一个名为UserName的文本字段和一个名为BUTTON1的提交按钮。表单的action属性指定表单提交到的URL。方法属性指定使用哪种HTTP协议提交表单:POSTGET

  1. 当用户单击提交按钮BUTTON1时,浏览器将收集表单中所有控件的值,并将它们提交给表单的action属性指定的URL。(请注意,页面可以通过使用action属性指定其名称或将action属性保留为空来提交回其自身。)。无论表单是通过POST还是GET提交的,CSP都会将提交的值视为URL参数。在这种情况下,提交表单相当于请求以下URL
MyPage.csp?USERNAME=Elvis&BUTTON1=OK

包括SUBMIT按钮的名称和值。
如果表单上有多个SUBMIT按钮,则请求中只包含实际按下的数据按钮。
这是检测何时发生SUBMIT的关键。

  1. 服务器代码(在本例中是MyPage.csp)检测到提交已经发生。这是通过测试%request对象中的名称BUTTON1来实现的:
<script language="Cache" runat="SERVER">
   // test for a submit button
   If ($Data(%request.Data("BUTTON1",1))) {
      // this is a submit; call our method
      Do ..MyMethod($Get(%request.Data("USERNAME",1)))
   }
</script>
  1. 在调用所需的服务器端逻辑后,服务器代码继续运行并返回HTML以供浏览器显示。这可能是当前表单或不同页面的重新显示。

标签:HTTP,服务器端,表单,AJAX,提交,CSP,第三十二章
From: https://www.cnblogs.com/yaoxin521123/p/16843088.html

相关文章

  • CSP-S 2022 T1题解
    题目描述:在一张图中找到能够到达的四个点,使之点权之和最大。先说说考场上的思路吧,要求不超过k次转车,其实就是要求长度不超过k。所以只需要找出这张图的全源最短路,然后建......
  • CSP-S2022游记
    Day-114514初赛过了,好像是\(88.5\)。Day0上午+下午做了几道\(CF\),下午最后\(1h\)在\(generals.io\)中水过。(似乎是传统,而且每次我最先挂)。晚上开始打板子,tarja......
  • P8819 CSP-S 2022 星战
    P8819CSP-S2022星战-洛谷|计算机科学教育新生态(luogu.com.cn)很棒的一道题,虽然一开始阅读理解确实掉了印象分,但后来做出来发现,瑕不掩瑜。先翻译一下题目:\(n\)......
  • CSP-S2022总结
    2022-10-29成都七中高新校区14:30-18:30先快速看了一遍题,发现T1看上去简单,T2“看上去”是一个很难的博弈论(其实非常简单,但是我没有花时间仔细的研究),T3是个维护图之类的数......
  • P8818 CSP-S 2022 策略游戏
    P8818CSP-S2022策略游戏-洛谷|计算机科学教育新生态(luogu.com.cn)矩阵这个描述就是障眼法。翻译一下题目:A在\(a[l_1\cdotsr_1]\)中选择一个\(x\),然后B......
  • [CSP-S 2022] 星战
    link首先手玩一下满足条件的图,只需要满足条件二:所有点出度为1,条件1会自然满足,我们必然可以顺着其出边走下去。code......
  • CSP-S2022
    luogu上还是240,和出考场时的估分差不多,不算很理想(感觉上考场一紧张代码能力直线下降。上来T1,T2都是一眼看出做法,但调代码花了很久,到16:30左右才顺利过完所有数据。然后......
  • CSP-S 2022 Unofficial 题解
    去年有个CSP-S2021Unofficial的题解但是那玩意咕掉了(主要是不想写最后一题,但是准备省选的时候会补上毕竟ZJ卷怪一堆懂得都懂),不过今年保证在NOIP2022前会写完这份题......
  • CSP-S2022 游记
    Day-2上午打了场信心赛,因为某种原因T2简单广搜想了半天先做了T3下午随机做了两道Y25t的题,看了两眼pbds打鬼子。摆烂。Day-1上午教练让我们几个找几道联赛到省......
  • P8817 CSP-S 2022 假期计划
    P8817CSP-S2022假期计划-洛谷|计算机科学教育新生态(luogu.com.cn)下文中,\(u\tov\)可达意为\(u\tov\)可以经过不多于\(k\)次转车到达,即\(u\)到\(v\)......