ASP函数指针试探-GetRef

AI权益加码!Claude Code、Cursor等20+工具免费用! 购周边限时加赠Coding Plan Lite,畅享主流AI工具!学习进阶更高效! 阅读详情

  近日在学习C++,看到函数指针,由于之前一直搞ASP,所以想ASP里面是否也有这个函数指针的东西,百度了一下,没有太多关于此方面的介绍,于是翻了翻VBScript手册,没让我失望,找到了GetRef这个函数,引用手册上的说明:

 

GetRef 函数

 

返回一个指向一过程的引用,此过程可绑定某事件。

Set object.eventname = GetRef(procname)

参数
object

必选项。事件所关联的对象的名称。

eventname

必选项。要与函数绑定的事件的名称。

procname

必选项。该字符串中包含 Sub 或 Function 过程的名称,该过程与事件关联。

说明
GetRef 函数可以用来将 VBScript 过程 (Function 或 Sub) 与 DHTML (动态 HTML)页面中可用的任何事件联系在一起。DHTML 对象模型为不同对象提供了与各种可用事件有关的信息。

在其他脚本和程序设计语言中,GetRef 所提供的功能被称为函数指针,即它指向了在指定事件发生时要执行的过程的地址。

下面的例子说明了 GetRef 函数的使用:

<SCRIPT LANGUAGE="VBScript">

Function GetRefTest()
  Dim Splash
  Splash = "GetRefTest Version 1.0"  & vbCrLf
  Splash = Splash & Chr(169) & " YourCompany 1999 "
  MsgBox Splash
End Function

Set Window.Onload = GetRef("GetRefTest")
</SCRIPT>

大概意思是为绑定事件所用,因为本人对ASP中事件了解不多,所以在这里对GetRef和事件的关系也不做过多的讨论。这里只研究下WEB开发应用中GetRef的用处。

在PHP里面,PHP不支持指针,因此无法使用函数指针这一技术。PHP支持所谓的“函数变量”,可以把函数赋予某个变量,其作用类似于函数指针。
简单点的例子:

PHP里面可以这么做

<?php
$funcname = "cutstr";
echo $funcname();

function cutstr() {
 return "function";
}
?>


有了GetRef,类似上面的功能ASP也可以实现:
<%
dim funcname
funcname = "cutstr"
response.Write(getref(funcname))

function cutstr()
 cutstr = "function"
end function
%>

 

实际应用:

在做后台管理的项目时,比如新闻添加,删除,修改,等操作在同一个页面处理,一般我们会在form里面插入一个隐藏域action,或者url参数action,根据action的值来判断操作哪一步。通常这么写:

select case request.querystring("action")
 case "add" : '要操作的代码段....
 case "modify" : '要操作的代码段....
end select

或者使用if else

 

使用“函数变量”可以使代码更加简洁、清晰,附上一个完整的例子,该例是后台中常用的一种操作。修改、删除、添加。
可以使用?action=×××来测试结果


<%
option explicit


dim array_action
'合法的模块名
array_action = array("list","add","add_form","modify","modify_form","del")


'输出
response.write(getref(action))


'检验参数是否合法
function action()
 dim str : str = request.querystring("action")
 action = array_action(0)
 if arr_in(array_action,str) then action = str
end function


'操作部分----------------------
function list()
 list = "显示列表信息"
end function


function add()
 add = "执行添加操作"
end function


function add_form()
 add_form = "显示添加表单"
end function


function modify()
 modify = "执行修改操作"
end function
'------------------------------


'检测是否存在于数组
function arr_in(a,v)
 arr_in = false
 dim i
 if isarray(a) then
  for each i in a
   if i = v then : arr_in = true : exit for : end if
  next
 end if
end function
%>

 

很多帖讨论ASP、PHP、.NET,到底哪个强,个人认为不是语言的问题,而是思想的问题,网站功能原理了解了,用什么语言写都一样,效率高不高、代码是否简洁明了,那就看自己的水平了。欢迎大家讨论!

ASP GetRef 函数指针试探 GetRef 函数 返回一个指向一过程的引用,此过程可绑定某事件。 Set object.eventname = GetRef(procname) 参数 object 必选项。事件所关联的对象的名称。 eventname 必选项。要与函数绑定的事件的名称。 procname 必选项。该字符串中包含 Sub 或 Function 过程的名称,该过程与事件关联。 说明 GetRef 函数可以用来将 VBScript 过程 (Function 或 Sub) 与 DHTML (动态 HTML)页面中可用的任何事件联系在一起。DHTML 对象模型为不同对象提供了与各种可用事件有关的信息。 在其他脚本和程 立即下载

相关推荐

GetRef用法

GetRef is used to create a pointer object to a function MsgBox test3(3,4,GetRef("test1")) MsgBox test3(3,4,GetRef("test2")) Function test1(a,b) test1= a+b End Function Function test2(a,b)

柚子茶0902 1318

VBScript基础

基本简介 编辑 VBScript[2]是微软开发的一种解析型的服务端(也支持客户端)脚本语言,可以看作是VB语言的简化版,与VBA的关系也非常密切。它具有原语言容易学习的特性。目前这种语言广泛应用于网页和ASP程序制作,同时还可以直接作为一个可执行程序。用于调试简单的VB语句非常方便。 由于VBScript可以通过Windows脚本宿主调用COM,因而可以使用Windows操作系统中可

Wang_ChunLi的博客 1434

ASP中使用类(Class)

  1在ASP中使用类(class)  2在不入前的一天,当我为了解决一个语法问题来翻阅VBscript文档时,偶然间发现在了下面的一句话:  3  4Class Statement  5  6Declares the name of a class, as well as a definition of the variables, properties, and methods that co

ξσ Dicky's Blog σξ 3243

使用AspJpeg组件为图片添加透明水印图片

<br />今天在为网站做一个小小的添加水印功能,使用的是AspJpeg组件,发现了一个令人苦恼的问题,无论水印图片是透明GIF还是透明PNG,所生成的图片水印后面总是有一层白色的背景。<br />百度了半天终于找到了答案,原因不是水印图片的问题,而是用错了组件方法:<br />常规方法:<br />'...代码省略<br />ogvbox.drawimage ogvbox.width-sy_width, ogvbox.height-sy_height, logobox, 0.8<br />ogvbox.c

拯救ASP 2206

拯救ASP---Quickwork For Asp 框架1.0正式发布

之前有对这个框架做过一些介绍,很多朋友问为什么只有介绍没有下载地址,前段时间比较忙,而且那时这个框架也只是测试阶段,最近闲了,整理了一下,发出来供大家交流,现已应用于数个实际项目,有公司网站、普通CMS门户网站及会员交互类网站等类型,暂无明显问题~下载地址:http://www.anyyy.com/quickwork.rar官方博客:http://www.anyyy.com/quick/RAR文件

拯救ASP 2006

支付宝接口需要特别注意的几点问题

<br />第一次做支付宝接口,还是不熟悉的PHP版本。总的来说还是比较简单,但还是遇到了几个官方也没有解释的问题,总结下下次备用(看过其它版本的接口代码,理论上适用于各类语言版本):<br />1、配置信息仔细填写(alipay_config.php)<br />2、特别注意发送到支付宝服务器时参数必须填写完整,必填项(out_trade_no,subject,body,total_fee)<br />3、若发送出现错误提示,仔细检查网址中的URL,各各参数是否正确(必要时在传递参数过程中使用url编码)

拯救ASP 1122

ASP Framework (一) 简介

  前阵子刚完成一个B/S架构的学校办公系统,体会就是表太多,文件太多,而每个文件中类似的操作(代码)也太多了,例如学生信息和教师信息操作,student.asp,teacher.asp,这两个文件要实现的功能有,添加、删除、修改、显示教师和学生信息,两个文件中就有很多相同的代码:比如:  显示信息,do while not rs.eof,rs.movenxt  添加记录,name = reque

拯救ASP 1071

ASP Framework (二) 数据库操作DB类

网站开发最常用最重要的也是数据库操作,该框架的DB类封装了几乎所有关于数据操作部分,并提供了一些高级功能以便灵活使用。适合操作的数据库类型:ACCESS,MSSQL虽然ASP也可以操作其它类型数据库,但那种情况非常少,而且兼容性也不太好,所以本类只支持这两种数据库类型。属性说明:[setshowerr]可选值:0,1,2,默认为1设置数据库操作中的错误显示类型0为不显示(适用于网站正式

拯救ASP 684

什么是 Function Calling ?

在初学者的认知中,最常见的误解是:“大模型直接调用了我写的 Python 函数或远程 API。事实并非如此。在整个 Function Calling 链路中,大语言模型从始至终只做了一件事:文本生成(Next-Token Prediction)。它不具备任何操作系统的网络权限,没有执行代码的环境,更不能直接向外部数据库发送网络报文。│ Function Calling 的职责切分 ││ 大语言模型 (LLM) 的职责 │ 宿主程序 (Your Code / Runtime) 的职责│。

2603_96126046的博客 282

开源电商系统技术架构演进与选型方法论|2026 行业趋势深度解析

本文深度解析 2026 开源电商架构演进趋势,梳理三代商城架构迭代历程,从领域化架构、跨端能力、AI 协同、长期成本等维度,拆解 LikeShop、ShopXO、NiuShop、JavaShop、GoodGoods 多款主流系统技术特点与适用场景。文章指出行业重心已从功能比拼转向架构、生态竞争,提炼完整选型方法论,建议企业结合业务规模、技术团队、长期 TCO 综合评估,落地前做好实测验证,挑选适配中长期业务规划的数字化底座。

每天分享不同的文章 340

基于Kubernetes的智能监控告警与AI 运维分析平台

本项目基于一主二从Kubernetes集群,构建智能运维系统:通过Prometheus与node_exporter采集节点指标,触发告警后由Alertmanager路由至Flask API;结合RAG架构调用通义千问大模型,检索运维知识库进行根因分析并生成建议;结果写入JSON文件,由Streamlit页面实时展示,并支持用户交互追问。系统实现从监控告警到AI诊断的闭环,具备可扩展的知识库管理与多轮对话能力,适用于云原生环境下的AIOps场景。

2503_90172382的博客 171

PHP接口超时后为什么任务还在跑

前端请求虽然已经超时,Nginx 也可能结束等待,但 PHP-FPM 里的脚本仍然在继续执行后面的数据库查询、文件处理或者第三方接口请求。页面通过任务状态判断处理中、成功还是失败,重复点击时也会先检查同一任务是否已经存在,避免再次提交。接口响应时间和业务执行时间最好分开处理,不然一旦网络慢或者前端超时,很容易出现“页面说失败,后台却已经执行”的情况。最近处理一个后台接口时遇到一个比较容易误判的问题:用户点击执行任务,前端等了几十秒后提示请求超时,但过一会儿刷新页面,却发现任务其实已经执行成功了。

2601_96636891的博客 79

Yocto 完整解析:原理、从零搭建环境与配方/配置文件怎么改

Yocto 完整解析:原理、从零搭建环境与配方/配置文件怎么改 第一次接触 Yocto,常见卡点不是「不会敲 bitbake」,而是分不清 **Yocto / OpenEmbedded / BitBake / Poky** 各自管什么;、、、、 改哪一层才生效;以及构建失败时该看 还是 。本文以 **Yocto Project 5.0(Scarthgap)/ Poky** 为主线,从原理到从零环境、再到编辑配置与配方,按层讲透一条可动手验证的闭环。版本差异处会标明「以当前 release 文档为准」。 阅读

qq_35223473的博客 221

PHP文件上传成功为什么页面却找不到

公开文件统一放到可访问目录,私有合同、客户资料则不再直接暴露地址,而是通过 PHP 接口校验登录状态和权限后再读取文件。最近处理一个企业后台上传附件的问题,用户上传合同后,接口明确返回“上传成功”,数据库里也有文件记录,但重新打开详情页时,图片和 PDF 全部显示 404。看到“上传成功”并不能说明文件一定能访问,还要确认三个东西:文件到底存在哪里、Nginx 从哪里对外提供文件、程序最后返回的 URL 指向哪里。,这个目录根本不存在,所以文件虽然上传成功,网页却永远找不到。,浏览器访问的实际上是。

2601_96636891的博客 178

吃瓜主题视频瀑布流PHP源码

吃瓜主题视频瀑布流PHP源码

软希网分享源码的博客 258
下一篇: ASP Framework (一) 简介
xtaddd
博客等级 码龄18年 2粉丝 9原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值