remote script文档(转载自微软)(六)
2000-08-12 10:07:58 来源:WEB开发网 闂傚倸鍊搁崐鎼佸磹閹间礁纾归柟闂寸绾惧綊鏌熼梻瀵割槮缁炬儳缍婇弻鐔兼⒒鐎靛壊妲紒鐐劤缂嶅﹪寮婚悢鍏尖拻閻庨潧澹婂Σ顔剧磼閻愵剙鍔ょ紓宥咃躬瀵鎮㈤崗灏栨嫽闁诲酣娼ф竟濠偽i鍓х<闁诡垎鍐f寖闂佺娅曢幑鍥灳閺冨牆绀冩い蹇庣娴滈箖鏌ㄥ┑鍡欏嚬缂併劎绮妵鍕箳鐎n亞浠鹃梺闈涙搐鐎氫即鐛崶顒夋晬婵絾瀵ч幑鍥蓟閻斿摜鐟归柛顭戝枛椤牆顪冮妶搴′簼缂侇喗鎸搁悾鐑藉础閻愬秵妫冮崺鈧い鎺戝瀹撲礁鈹戦悩鎻掝伀缁惧彞绮欓弻娑氫沪閹规劕顥濋梺閫炲苯澧伴柟铏崌閿濈偛鈹戠€n€晠鏌嶆潪鎷屽厡闁汇倕鎳愮槐鎾存媴閸撴彃鍓卞銈嗗灦閻熲晛鐣烽妷褉鍋撻敐搴℃灍闁绘挻娲橀妵鍕箛闂堟稐绨肩紓浣藉煐濮樸劎妲愰幘璇茬闁冲搫鍊婚ˇ鏉库攽椤旂》宸ユい顓炲槻閻g兘骞掗幋鏃€鐎婚梺瑙勬儗閸樺€熲叺婵犵數濮烽弫鍛婃叏椤撱垹纾婚柟鍓х帛閳锋垶銇勯幒鍡椾壕缂備礁顦遍弫濠氱嵁閸℃稒鍊烽柛婵嗗椤旀劕鈹戦悜鍥╃У闁告挻鐟︽穱濠囨嚃閳哄啰锛滈梺褰掑亰閸欏骸鈻撳⿰鍫熺厸閻忕偟纭堕崑鎾诲箛娴e憡鍊梺纭呭亹鐞涖儵鍩€椤掑啫鐨洪柡浣圭墪閳规垿鎮欓弶鎴犱桓闂佸湱枪閹芥粎鍒掗弮鍫熷仺缂佸顕抽敃鍌涚厱闁哄洢鍔岄悘鐘绘煕閹般劌浜惧┑锛勫亼閸婃牠宕濋敃鈧…鍧楀焵椤掍胶绠剧€光偓婵犱線鍋楀┑顔硷龚濞咃絿妲愰幒鎳崇喓鎷犻懠鑸垫毐闂傚倷鑳舵灙婵炲鍏樺顐ゆ嫚瀹割喖娈ㄦ繝鐢靛У绾板秹寮查幓鎺濈唵閻犺櫣灏ㄥ銉р偓瑙勬尭濡繂顫忛搹鍦<婵☆垰鎼~宥囩磽娴i鍔嶉柟绋垮暱閻g兘骞嬮敃鈧粻濠氭偣閸パ冪骇鐎规挸绉撮—鍐Χ閸℃ê闉嶇紓浣割儐閸ㄥ墎绮嬪澶嬪€锋い鎺嶇瀵灝鈹戦埥鍡楃仯闁告鍕洸濡わ絽鍟崐鍨叏濡厧浜鹃悗姘炬嫹

核心提示:文档: 调用 Remote Scripting 方法异步Remote scripting 向您提供了异步调用服务器方法的选择 ──当执行服务器方法时,用户的客户脚本继续运行,remote script文档(转载自微软)(六),异步调用 remote scripting 方法使得您可以避免应用程序用户接口速度的减慢,因为
文档: 调用 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 调用,有效地将异步调用转换为同步调用。如果您在自己的客户脚本中到了异步调用提供所需信息的阶段,那么就可这样做。为了等待,可以调用调用对象的等待方法。
取消调用,若要这样做,可以调用调用对象的取消方法。
- ››Script.Aculo.Us开发系列(一):起步
- ››Script.aculo.us开发系列(二):EffectsAPI
- ››Script.aculo.us开发系列(三):核心效果(CoreEffec...
- ››Script.aculo.us开发系列(四):动画弹出菜单的实现...
- ››Script.aculo.us开发系列(五):Prototype封装的艺术...
- ››Script.aculo.us开发系列(六):AutoComplete控件
- ››Script.aculo.us开发系列(七):InPlaceEditor控件的...
- ››Script.aculo.us开发系列(八):使用DropDrag定义拖...
- ››Script.aculo.us开发系列(九):Slider控件的使用
- ››文档保护妙招 PDF文档巧妙加密方法
- ››文档分节——Word 2007书籍排版完全手册(八)
- ››文档编辑更轻松 Word域功能进阶
更多精彩
赞助商链接