日期:2009-01-12  浏览次数:21019 次

文档: 调用 Remote Scripting 方法同步

在对某个客户页和某个服务器页上的 remote scripting 进行配置后,您就可以从自己的客户脚本调用该服务器页的方法了。缺省的情况是,当用户调用某个服务器方法时,它被同步执行──您的客户脚本直到服务器方法执行完毕并返回结果后才能停止运行。一般说来,当您在自己的客户脚本中需要服务器方法结果时,则需同步调用服务器方法。


注意 您也可以异步调用服务器方法。有关详细信息,请参阅异步调用 Remote Scripting 方法。

当您调用某个服务器方法时,该方法并不返回单个值。而是创建一个 call object ,它是一个包含了被调用过程的返回和状态信息的对象。最常用的属性是调用对象的 return_value 属性,它包含了远程过程计算或者检查出来的单个值。其他调用对象属性使得用户可以得到更多关于远程过程调用的状态信息。

如果您已经创建了对某个服务器页的对象引用,那么可以用标准 object.method 语法来调用方法。有关创建对象引用的详细信息,请参阅作为对象引用 ASP 页。另外,您也可以在没有任何对象引用时调用 remote scripting 方法。这样做比起使用 object.method 语法来要略微冗余些,但不需要用户首先创建对象引用。

同步调用服务器方法

如果用户创建了对服务器页的对象引用,那么对于使用 JavaScript 的调用,可用第一个语法示例,而对于使用 VBScript 的调用,可用第二种语法示例:
JavaScript:
callObject = ASPObject.methodName(p1, p2[,...])

VBScript:
set callObject = ASPObject.methodName(p1, p2[,...])


- 或者 -

如果用户没有创建对象引用,调用 RSExecute 函数。对于使用 JavaScript 的调用,使用第一个语法示例,而对于使用 VBScript 的调用,使用第二种语法示例:
JavaScript:
callobject = RSExecute(url, methodName, p1, p2[,...])

VBScript:
set callobject = RSExecute(url, methodName, p1, p2[,...])


其中:

callObject 在 remote scripting 调用完成后,将被实例化的调用对象名。您无需在调用 remote script 之前创建该对象;远程脚本调用为您创建之。


ASPObject 您在早期使用 RSGetASPObject 方法可选择地创建的对象引用。有关详细信息,请参阅作为对象引用 ASP 页。


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


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


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

例如,下面按钮 btnAdd 的客户脚本 onclick 处理程序调用服务器方法 add 来累加两个数值。调用 remote scripting 方法会创建一个名为 co 的调用对象。remote scripting 调用的结果从调用对象的 return_value 属性中提取出来,并作为名为 txt3 的文本框值显示出来。

<SCRIPT LANGUAGE="JavaScript" for="btnAdd" event="onclick">
    rsMath = RSGetASPObject("../myPages/RSMath.ASP")
    number1 = txt1.value;
    number2 = txt2.value;
    co = rsMath.Add(number1,number2);
    txt3.value = "The sum is " + co.return_value;
</SCRIPT>


在无对象引用情况下所产生的同样调用(用 RSExecute )可能如下所示:

<SCRIPT LANGUAGE="JavaScript" for="btnAdd" event="onclick">
    number1 = txt1.value;
    number2 = txt2.value;
    co = RSExecute("RSmath.ASP","add",number1,number2);
    txt3.value = "The sum is " + co.return_value;
</SCRIPT>


有关在产生 remote scripting 调用时,如何检查错误的详细信息,请参阅检查错误。