remote script文档(转载自微软)(六)
remote script文档(转载自微软)(六)
发布时间:2016-12-28 来源:查字典编辑
摘要:文档:调用RemoteScripting方法异步Remotescripting向您提供了异步调用服务器方法的选择──当执行服务器方法时,用户...

文档:调用RemoteScripting方法异步

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

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

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

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

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

一个可选的上下文参数。这是用户传递给方法并在以后传回用户的数据。它典型地用于帮助您决定在自己的回调函数中正调用什么方法,例如,如果您正在将所有远程脚本调用回传给某个回调函数。

类似于同步调用,异步调用将创建一个调用对象,该对象支持包含被调用过程的返回值和状态信息的属性。例如,某个remotescripting方法的返回值可在调用对象的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在完成remotescripting调用时将被实例化的调用对象名。您无需创建在调用remotescript之前创建该对象;RSExecute方法为您创建该对象。

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

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

p1,p2,...methodName中方法所需要的任何参数。参数是通过值进行传递的。您可以传递简单的数据类型,比如数值或者文本值,但不能传递数组或者对象。

注意当把参数从客户传递给服务器时,它们被转换为字符串。要确保在使用这些参数值时,您的服务器方法将它们转换为合适的数据类型。有关详细信息,请参阅使得服务器页中的RemoteScripting有效。

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

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

context您传递给remotescripting方法并回传给您的一个可选值。您可以在自己的回调函数中用自己觉得有用的任意方式使用该值。

例如,下面按钮btnSquare的客户脚本onclick处理程序调用服务器方法square来对文本框txt1中的指定数值进行平方运算。当执行了该方法后,它调用函数showResults。操作符名(“求平方”)在上下文参数中进行传递。

<SCRIPTLANGUAGE="javascript"for="btnSquare"event="onclick">

rsMath=RSGetASPObject("../myPages/RSMath.asp")

number1=txt1.value;

context="squaring";

co=rsmath.square(number1,showResults,context);

</SCRIPT>

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

<SCRIPTLANGUAGE="javascript"for="btnSquare"event="onclick">

number1=txt1.value;

context="squaring";

co=RSExecute("RSmath.asp","square",number1,showResults,context);

</SCRIPT>

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

<SCRIPTLANGUAGE="javascript">

functionshowResults(co){

typeOp=co.context;

rValue=co.return_value;

txt2.value="Resultof"+typeOp+"operation="+rValue;

}

<SCRIPT>

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

测试异步调用

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

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

在调用脚本中,获得调用对象的status属性值,它可以包含下列值中的任一个:

值描述

-1失败

0完成

1挂起(仅在异步调用过程中有效)。

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

<SCRIPTLANGUAGE="javascript"for="btnSquare"event="onclick">

number1=txt1.value;

context="squaring";

co=RSExecute("RSmath.asp","square",number1);

if(co.status==-1)

{txt2.value="Callfailed";}

else

{txt2.value="Callsucceeded,returnvalue="+co.return_value;}}

</SCRIPT>

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

控制异步调用

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

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

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

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新远程脚本学习
热门远程脚本学习
脚本专栏子分类