数码控科技猎奇Iphone动漫星座游戏电竞lolcosplay王者荣耀攻略allcnewsBLOGNEWSBLOGASKBLOGBLOGZSK全部技术问答问答技术问答it问答代码软件新闻开发博客电脑/网络手机/数码笔记本电脑互联网操作系统软件硬件编程开发360产品资源分享电脑知识文档中心IT全部全部分类 全部分类技术牛文全部分类教程最新 网页制作cms教程平面设计媒体动画操作系统网站运营网络安全服务器教程数据库工具网络安全软件教学vbscript正则表达式javascript批处理更多»编程更新教程更新游戏更新allitnewsJava 新闻网络医疗信息化安全创业站长电商科技访谈域名会议专栏创业动态融资创投创业学院 / 产品经理创业公司人物访谈营销 开发数据库服务器系统虚拟化云计算 嵌入式移动开发作业作业1常见软件all电脑网络手机数码生活游戏体育运动明星影音休闲爱好文化艺术社会民生教育科学医疗健康金融管理情感社交地区其他电脑互联网软件硬件编程开发360相关产品手机平板其他电子产品摄影器材360硬件通讯智能设备购物时尚生活常识美容塑身服装服饰出行旅游交通汽车购房置业家居装修美食烹饪单机电脑游戏网页游戏电视游戏桌游棋牌游戏手机游戏小游戏掌机游戏客户端游戏集体游戏其他游戏体育赛事篮球足球其他运动球类运动赛车健身运动运动用品影视娱乐人物音乐动漫摄影摄像收藏宠物幽默搞笑起名花鸟鱼虫茶艺彩票星座占卜书画美术舞蹈小说图书器乐声乐小品相声戏剧戏曲手工艺品历史话题时事政治就业职场军事国防节日风俗法律法规宗教礼仪礼节自然灾害360维权社会人物升学入学人文社科外语资格考试公务员留学出国家庭教育学习方法语文物理生物工程学农业数学化学健康知识心理健康孕育早教内科外科妇产科儿科皮肤科五官科男科整形中医药品传染科其他疾病医院两性肿瘤科创业投资企业管理财务税务银行股票金融理财基金债券保险贸易商务文书国民经济爱情婚姻家庭烦恼北京上海重庆天津黑龙江吉林辽宁河北内蒙古山西陕西宁夏甘肃青海新疆西藏四川贵州云南河南湖北湖南山东江苏浙江安徽江西福建广东广西海南香港澳门台湾海外地区

remote script文档(转载自微软)(六)

日期:2013/11/21 16:28:00 来源:本网整理
文档: 调用 Remote Scripting 方法异步

Remote scripting 向您提供了异步调用服务器方法的选择 ──当执行服务器方法时,用户的客户脚本继续运行。异步调用 remote scripting 方法使得您可以避免应用程序用户接口速度的减慢,因为您可以在执行服务器脚本的同时继续工作。

注意 如果您的应用程序需要,那么也可以同步调用服务器方法。有关详细信息,请参阅同步调用 Remote Scripting 方法。

异步调用某个 remote script 类似于同步调用。不过,当产生调用时,您要指定多至三个附加参数: 

当服务器方法完成处理时,在用户的客户脚本中有一个被调用的 javascript callback function 。例如,如果用户的 remote scripting 方法执行一次数据库检查,那么回调函数可能得到远程调用返回的检查值,并在页面上的某个控件中显示之。


一个可选的 javascript 错误回调函数──如果异步调用时遇到错误将调用之。


一个可选的上下文参数。这是用户传递给方法并在以后传回用户的数据。它典型地用于帮助您决定在自己的回调函数中正调用什么方法,例如,如果您正在将所有远程脚本调用回传给某个回调函数。 
类似于同步调用,异步调用将创建一个调用对象,该对象支持包含被调用过程的返回值和状态信息的属性。例如,某个 remote scripting 方法的返回值可在调用对象的 return_value 属性中获得。在异步调用时,调用对象 status 属性向用户提供关于调用状态的信息。

当您产生异步调用时,调用对象作为一个参数传递到回调函数中。这样您就可以在调用脚本中对其进行测试(例如,决定呼叫的状态),或者在回调函数中测试(例如,获得方法的返回值)。

如果您已经创建了对某个服务器页的对象引用,那么您就可以用标准的 object.method 语法来调用方法。有关创建对象引用的详细信息,请参阅作为对象引用 ASP 页。

如何异步调用服务器方法 

如果用户已经创建了对服务器页的对象引用,那么可以用下面的语法。由于您必须传递回调函数的函数指针,因此对于异步方法调用来说,您必须用 javascript。
callObject = ASPObject. methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)


- 或者 - 

如果您尚未创建对象引用,那么可以调用 RSExecute 函数,所用语法如下:
callobject = RSExecute(url, methodName, p1, p2[,...], 
callbackFunction, errorCallbackFunction, context)


其中: 

ASPObject 您先前用 RSGetASPObject 方法创建的对象引用。有关详细信息,请参阅作为对象引用 ASP 页。


callObject 在完成 remote scripting 调用时将被实例化的调用对象名。您无需创建在调用 remote script 之前创建该对象;RSExecute 方法为您创建该对象。


url 包含您想要执行的远程脚本的 ASP 页的 URL。服务器页必须已被配置为使得服务器页中的 Remote Scripting 有效中所描述的那样。服务器页必须在用户从中请求当前客户页的服务器上。


methodName 您想要执行的服务器页上的方法名。


p1, p2, ... methodName 中方法所需要的任何参数。参数是通过值进行传递的。您可以传递简单的数据类型,比如数值或者文本值,但不能传递数组或者对象。
注意 当把参数从客户传递给服务器时,它们被转换为字符串。要确保在使用这些参数值时,您的服务器方法将它们转换为合适的数据类型。有关详细信息,请参阅使得服务器页中的 Remote Scripting 有效。 

callbackFunction 您的客户脚本中 javascript 函数的函数指针,当完成对 remote scripting 方法的调用时将调用该函数。由于用户正在传递的是一个指针,因此不要在引号中包括其名字。在 RSExecute 调用中包括回调函数名意味着您想要异步执行 remote scripting 方法。


errorCallbackFunction 用户的客户脚本中某个可选 javascript 函数的函数指针,如果 remote scripting 方法遇到一个错误,将调用该函数。由于您所传递的是一个指针,因此不要在引号中包括其名。关于 remote scripting 中错误的详细信息,请参阅检查错误。


context 您传递给 remote scripting 方法并回传给您的一个可选值。您可以在自己的回调函数中用自己觉得有用的任意方式使用该值。 
例如,下面按钮 btnSquare 的客户脚本 onclick 处理程序调用服务器方法 square 来对文本框 txt1 中的指定数值进行平方运算。当执行了该方法后,它调用函数 showResults 。操作符名(“求平方”)在上下文参数中进行传递。

<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
rsMath = RSGetASPObject("../myPages/RSMath.asp")
number1 = txt1.value;
context = "squaring";
co = rsmath.square(number1,showResults,context);
</SCRIPT>


使用 RSExecute 而不用对象引用的同样示例如下所示:

<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
number1 = txt1.value;
context = "squaring";
co = RSExecute("RSmath.asp","square",number1,showResults,context);
</SCRIPT>


函数 showResults 是先前示例的回调函数,可能如下所示:

<SCRIPT LANGUAGE="javascript">
function showResults(co){
typeOp = co.context;
rValue = co.return_value;
txt2.value = "Result of " + typeOp + " operation = " + rValue;
}
<SCRIPT>


在这种情况下,showResults 函数可被用作一般意义上的回调函数,以显示任何运算值。该函数指明用户可能如何使用调用对象的 context 属性(当调用 remote scripting 函数时对之进行初始化),以便于决定如何调用回调函数。

测试异步调用
用户可以对某个远程调用的状态进行测试,以便于搞清调用是否成功。如果用户已经进行了异步调用,那么用户可以测试是否已完成调用。

如何测试某个远程调用的状态 

在调用脚本中,获得调用对象的 status 属性值,它可以包含下列值中的任一个: 
值 描述 
-1 失败 
0 完成 
1 挂起(仅在异步调用过程中有效)。 


下面的示例显示了同步调用某个叫做 square 的 remote scripting 方法,然后在页面上的某个文本框中显示调用状态的客户脚本。

<SCRIPT LANGUAGE="javascript" for="btnSquare" event="onclick">
number1 = txt1.value;
context = "squaring";
co = RSExecute("RSmath.asp","square",number1);
if (co.status == -1)
{txt2.value = "Call failed";}
else 
{txt2.value = "Call succeeded, return value = " + co.return_value;} }
</SCRIPT>


关于错误的详细信息,请参阅检查错误。


控制异步调用
进行异步调用时,可用两种方式来控制它: 

等待调用完成。这将挂起客户脚本处理,直到完成 remote scripting 调用,有效地将异步调用转换为同步调用。如果您在自己的客户脚本中到了异步调用提供所需信息的阶段,那么就可这样做。为了等待,可以调用调用对象的等待方法。


取消调用,若要这样做,可以调用调用对象的取消方法。

  • 本文相关:
  • remote script文档(转载自微软)(七)
  • remote script文档(转载自微软)(八)
  • remote script文档(转载自微软)(九)
  • 远程脚本 概述
  • 免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved