remote script文檔(轉(zhuǎn)載自微軟)(六)
更新時間:2007年03月03日 00:00:00 作者:
文檔: 調(diào)用 Remote Scripting 方法異步
Remote scripting 向您提供了異步調(diào)用服務器方法的選擇 ──當執(zhí)行服務器方法時,用戶的客戶腳本繼續(xù)運行。異步調(diào)用 remote scripting 方法使得您可以避免應用程序用戶接口速度的減慢,因為您可以在執(zhí)行服務器腳本的同時繼續(xù)工作。
注意 如果您的應用程序需要,那么也可以同步調(diào)用服務器方法。有關(guān)詳細信息,請參閱同步調(diào)用 Remote Scripting 方法。
異步調(diào)用某個 remote script 類似于同步調(diào)用。不過,當產(chǎn)生調(diào)用時,您要指定多至三個附加參數(shù):
當服務器方法完成處理時,在用戶的客戶腳本中有一個被調(diào)用的 javascript callback function 。例如,如果用戶的 remote scripting 方法執(zhí)行一次數(shù)據(jù)庫檢查,那么回調(diào)函數(shù)可能得到遠程調(diào)用返回的檢查值,并在頁面上的某個控件中顯示之。
一個可選的 javascript 錯誤回調(diào)函數(shù)──如果異步調(diào)用時遇到錯誤將調(diào)用之。
一個可選的上下文參數(shù)。這是用戶傳遞給方法并在以后傳回用戶的數(shù)據(jù)。它典型地用于幫助您決定在自己的回調(diào)函數(shù)中正調(diào)用什么方法,例如,如果您正在將所有遠程腳本調(diào)用回傳給某個回調(diào)函數(shù)。
類似于同步調(diào)用,異步調(diào)用將創(chuàng)建一個調(diào)用對象,該對象支持包含被調(diào)用過程的返回值和狀態(tài)信息的屬性。例如,某個 remote scripting 方法的返回值可在調(diào)用對象的 return_value 屬性中獲得。在異步調(diào)用時,調(diào)用對象 status 屬性向用戶提供關(guān)于調(diào)用狀態(tài)的信息。
當您產(chǎn)生異步調(diào)用時,調(diào)用對象作為一個參數(shù)傳遞到回調(diào)函數(shù)中。這樣您就可以在調(diào)用腳本中對其進行測試(例如,決定呼叫的狀態(tài)),或者在回調(diào)函數(shù)中測試(例如,獲得方法的返回值)。
如果您已經(jīng)創(chuàng)建了對某個服務器頁的對象引用,那么您就可以用標準的 object.method 語法來調(diào)用方法。有關(guān)創(chuàng)建對象引用的詳細信息,請參閱作為對象引用 ASP 頁。
如何異步調(diào)用服務器方法
如果用戶已經(jīng)創(chuàng)建了對服務器頁的對象引用,那么可以用下面的語法。由于您必須傳遞回調(diào)函數(shù)的函數(shù)指針,因此對于異步方法調(diào)用來說,您必須用 javascript。
callObject = ASPObject. methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
- 或者 -
如果您尚未創(chuàng)建對象引用,那么可以調(diào)用 RSExecute 函數(shù),所用語法如下:
callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
其中:
ASPObject 您先前用 RSGetASPObject 方法創(chuàng)建的對象引用。有關(guān)詳細信息,請參閱作為對象引用 ASP 頁。
callObject 在完成 remote scripting 調(diào)用時將被實例化的調(diào)用對象名。您無需創(chuàng)建在調(diào)用 remote script 之前創(chuàng)建該對象;RSExecute 方法為您創(chuàng)建該對象。
url 包含您想要執(zhí)行的遠程腳本的 ASP 頁的 URL。服務器頁必須已被配置為使得服務器頁中的 Remote Scripting 有效中所描述的那樣。服務器頁必須在用戶從中請求當前客戶頁的服務器上。
methodName 您想要執(zhí)行的服務器頁上的方法名。
p1, p2, ... methodName 中方法所需要的任何參數(shù)。參數(shù)是通過值進行傳遞的。您可以傳遞簡單的數(shù)據(jù)類型,比如數(shù)值或者文本值,但不能傳遞數(shù)組或者對象。
注意 當把參數(shù)從客戶傳遞給服務器時,它們被轉(zhuǎn)換為字符串。要確保在使用這些參數(shù)值時,您的服務器方法將它們轉(zhuǎn)換為合適的數(shù)據(jù)類型。有關(guān)詳細信息,請參閱使得服務器頁中的 Remote Scripting 有效。
callbackFunction 您的客戶腳本中 javascript 函數(shù)的函數(shù)指針,當完成對 remote scripting 方法的調(diào)用時將調(diào)用該函數(shù)。由于用戶正在傳遞的是一個指針,因此不要在引號中包括其名字。在 RSExecute 調(diào)用中包括回調(diào)函數(shù)名意味著您想要異步執(zhí)行 remote scripting 方法。
errorCallbackFunction 用戶的客戶腳本中某個可選 javascript 函數(shù)的函數(shù)指針,如果 remote scripting 方法遇到一個錯誤,將調(diào)用該函數(shù)。由于您所傳遞的是一個指針,因此不要在引號中包括其名。關(guān)于 remote scripting 中錯誤的詳細信息,請參閱檢查錯誤。
context 您傳遞給 remote scripting 方法并回傳給您的一個可選值。您可以在自己的回調(diào)函數(shù)中用自己覺得有用的任意方式使用該值。
例如,下面按鈕 btnSquare 的客戶腳本 onclick 處理程序調(diào)用服務器方法 square 來對文本框 txt1 中的指定數(shù)值進行平方運算。當執(zhí)行了該方法后,它調(diào)用函數(shù) showResults 。操作符名(“求平方”)在上下文參數(shù)中進行傳遞。
<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>
函數(shù) showResults 是先前示例的回調(diào)函數(shù),可能如下所示:
<SCRIPT LANGUAGE="javascript">
function showResults(co){
typeOp = co.context;
rValue = co.return_value;
txt2.value = "Result of " + typeOp + " operation = " + rValue;
}
<SCRIPT>
在這種情況下,showResults 函數(shù)可被用作一般意義上的回調(diào)函數(shù),以顯示任何運算值。該函數(shù)指明用戶可能如何使用調(diào)用對象的 context 屬性(當調(diào)用 remote scripting 函數(shù)時對之進行初始化),以便于決定如何調(diào)用回調(diào)函數(shù)。
測試異步調(diào)用
用戶可以對某個遠程調(diào)用的狀態(tài)進行測試,以便于搞清調(diào)用是否成功。如果用戶已經(jīng)進行了異步調(diào)用,那么用戶可以測試是否已完成調(diào)用。
如何測試某個遠程調(diào)用的狀態(tài)
在調(diào)用腳本中,獲得調(diào)用對象的 status 屬性值,它可以包含下列值中的任一個:
值 描述
-1 失敗
0 完成
1 掛起(僅在異步調(diào)用過程中有效)。
下面的示例顯示了同步調(diào)用某個叫做 square 的 remote scripting 方法,然后在頁面上的某個文本框中顯示調(diào)用狀態(tài)的客戶腳本。
<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>
關(guān)于錯誤的詳細信息,請參閱檢查錯誤。
控制異步調(diào)用
進行異步調(diào)用時,可用兩種方式來控制它:
等待調(diào)用完成。這將掛起客戶腳本處理,直到完成 remote scripting 調(diào)用,有效地將異步調(diào)用轉(zhuǎn)換為同步調(diào)用。如果您在自己的客戶腳本中到了異步調(diào)用提供所需信息的階段,那么就可這樣做。為了等待,可以調(diào)用調(diào)用對象的等待方法。
取消調(diào)用,若要這樣做,可以調(diào)用調(diào)用對象的取消方法。
Remote scripting 向您提供了異步調(diào)用服務器方法的選擇 ──當執(zhí)行服務器方法時,用戶的客戶腳本繼續(xù)運行。異步調(diào)用 remote scripting 方法使得您可以避免應用程序用戶接口速度的減慢,因為您可以在執(zhí)行服務器腳本的同時繼續(xù)工作。
注意 如果您的應用程序需要,那么也可以同步調(diào)用服務器方法。有關(guān)詳細信息,請參閱同步調(diào)用 Remote Scripting 方法。
異步調(diào)用某個 remote script 類似于同步調(diào)用。不過,當產(chǎn)生調(diào)用時,您要指定多至三個附加參數(shù):
當服務器方法完成處理時,在用戶的客戶腳本中有一個被調(diào)用的 javascript callback function 。例如,如果用戶的 remote scripting 方法執(zhí)行一次數(shù)據(jù)庫檢查,那么回調(diào)函數(shù)可能得到遠程調(diào)用返回的檢查值,并在頁面上的某個控件中顯示之。
一個可選的 javascript 錯誤回調(diào)函數(shù)──如果異步調(diào)用時遇到錯誤將調(diào)用之。
一個可選的上下文參數(shù)。這是用戶傳遞給方法并在以后傳回用戶的數(shù)據(jù)。它典型地用于幫助您決定在自己的回調(diào)函數(shù)中正調(diào)用什么方法,例如,如果您正在將所有遠程腳本調(diào)用回傳給某個回調(diào)函數(shù)。
類似于同步調(diào)用,異步調(diào)用將創(chuàng)建一個調(diào)用對象,該對象支持包含被調(diào)用過程的返回值和狀態(tài)信息的屬性。例如,某個 remote scripting 方法的返回值可在調(diào)用對象的 return_value 屬性中獲得。在異步調(diào)用時,調(diào)用對象 status 屬性向用戶提供關(guān)于調(diào)用狀態(tài)的信息。
當您產(chǎn)生異步調(diào)用時,調(diào)用對象作為一個參數(shù)傳遞到回調(diào)函數(shù)中。這樣您就可以在調(diào)用腳本中對其進行測試(例如,決定呼叫的狀態(tài)),或者在回調(diào)函數(shù)中測試(例如,獲得方法的返回值)。
如果您已經(jīng)創(chuàng)建了對某個服務器頁的對象引用,那么您就可以用標準的 object.method 語法來調(diào)用方法。有關(guān)創(chuàng)建對象引用的詳細信息,請參閱作為對象引用 ASP 頁。
如何異步調(diào)用服務器方法
如果用戶已經(jīng)創(chuàng)建了對服務器頁的對象引用,那么可以用下面的語法。由于您必須傳遞回調(diào)函數(shù)的函數(shù)指針,因此對于異步方法調(diào)用來說,您必須用 javascript。
callObject = ASPObject. methodName(p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
- 或者 -
如果您尚未創(chuàng)建對象引用,那么可以調(diào)用 RSExecute 函數(shù),所用語法如下:
callobject = RSExecute(url, methodName, p1, p2[,...],
callbackFunction, errorCallbackFunction, context)
其中:
ASPObject 您先前用 RSGetASPObject 方法創(chuàng)建的對象引用。有關(guān)詳細信息,請參閱作為對象引用 ASP 頁。
callObject 在完成 remote scripting 調(diào)用時將被實例化的調(diào)用對象名。您無需創(chuàng)建在調(diào)用 remote script 之前創(chuàng)建該對象;RSExecute 方法為您創(chuàng)建該對象。
url 包含您想要執(zhí)行的遠程腳本的 ASP 頁的 URL。服務器頁必須已被配置為使得服務器頁中的 Remote Scripting 有效中所描述的那樣。服務器頁必須在用戶從中請求當前客戶頁的服務器上。
methodName 您想要執(zhí)行的服務器頁上的方法名。
p1, p2, ... methodName 中方法所需要的任何參數(shù)。參數(shù)是通過值進行傳遞的。您可以傳遞簡單的數(shù)據(jù)類型,比如數(shù)值或者文本值,但不能傳遞數(shù)組或者對象。
注意 當把參數(shù)從客戶傳遞給服務器時,它們被轉(zhuǎn)換為字符串。要確保在使用這些參數(shù)值時,您的服務器方法將它們轉(zhuǎn)換為合適的數(shù)據(jù)類型。有關(guān)詳細信息,請參閱使得服務器頁中的 Remote Scripting 有效。
callbackFunction 您的客戶腳本中 javascript 函數(shù)的函數(shù)指針,當完成對 remote scripting 方法的調(diào)用時將調(diào)用該函數(shù)。由于用戶正在傳遞的是一個指針,因此不要在引號中包括其名字。在 RSExecute 調(diào)用中包括回調(diào)函數(shù)名意味著您想要異步執(zhí)行 remote scripting 方法。
errorCallbackFunction 用戶的客戶腳本中某個可選 javascript 函數(shù)的函數(shù)指針,如果 remote scripting 方法遇到一個錯誤,將調(diào)用該函數(shù)。由于您所傳遞的是一個指針,因此不要在引號中包括其名。關(guān)于 remote scripting 中錯誤的詳細信息,請參閱檢查錯誤。
context 您傳遞給 remote scripting 方法并回傳給您的一個可選值。您可以在自己的回調(diào)函數(shù)中用自己覺得有用的任意方式使用該值。
例如,下面按鈕 btnSquare 的客戶腳本 onclick 處理程序調(diào)用服務器方法 square 來對文本框 txt1 中的指定數(shù)值進行平方運算。當執(zhí)行了該方法后,它調(diào)用函數(shù) showResults 。操作符名(“求平方”)在上下文參數(shù)中進行傳遞。
<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>
函數(shù) showResults 是先前示例的回調(diào)函數(shù),可能如下所示:
<SCRIPT LANGUAGE="javascript">
function showResults(co){
typeOp = co.context;
rValue = co.return_value;
txt2.value = "Result of " + typeOp + " operation = " + rValue;
}
<SCRIPT>
在這種情況下,showResults 函數(shù)可被用作一般意義上的回調(diào)函數(shù),以顯示任何運算值。該函數(shù)指明用戶可能如何使用調(diào)用對象的 context 屬性(當調(diào)用 remote scripting 函數(shù)時對之進行初始化),以便于決定如何調(diào)用回調(diào)函數(shù)。
測試異步調(diào)用
用戶可以對某個遠程調(diào)用的狀態(tài)進行測試,以便于搞清調(diào)用是否成功。如果用戶已經(jīng)進行了異步調(diào)用,那么用戶可以測試是否已完成調(diào)用。
如何測試某個遠程調(diào)用的狀態(tài)
在調(diào)用腳本中,獲得調(diào)用對象的 status 屬性值,它可以包含下列值中的任一個:
值 描述
-1 失敗
0 完成
1 掛起(僅在異步調(diào)用過程中有效)。
下面的示例顯示了同步調(diào)用某個叫做 square 的 remote scripting 方法,然后在頁面上的某個文本框中顯示調(diào)用狀態(tài)的客戶腳本。
<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>
關(guān)于錯誤的詳細信息,請參閱檢查錯誤。
控制異步調(diào)用
進行異步調(diào)用時,可用兩種方式來控制它:
等待調(diào)用完成。這將掛起客戶腳本處理,直到完成 remote scripting 調(diào)用,有效地將異步調(diào)用轉(zhuǎn)換為同步調(diào)用。如果您在自己的客戶腳本中到了異步調(diào)用提供所需信息的階段,那么就可這樣做。為了等待,可以調(diào)用調(diào)用對象的等待方法。
取消調(diào)用,若要這樣做,可以調(diào)用調(diào)用對象的取消方法。
相關(guān)文章
remote script文檔(轉(zhuǎn)載自微軟)(一)
remote script文檔(轉(zhuǎn)載自微軟)(一)...2007-03-03remote script文檔[轉(zhuǎn)載自微軟](二)
remote script文檔[轉(zhuǎn)載自微軟](二)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(五)
這篇文章主要介紹了remote script文檔的相關(guān)資料,需要的朋友可以參考下2007-03-03不錯的remote script文檔(轉(zhuǎn)載自微軟)(三)
不錯的remote script文檔(轉(zhuǎn)載自微軟)(三)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(九)
remote script文檔(轉(zhuǎn)載自微軟)(九)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(八)
remote script文檔(轉(zhuǎn)載自微軟)(八)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(六)
remote script文檔(轉(zhuǎn)載自微軟)(六)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(七)
remote script文檔(轉(zhuǎn)載自微軟)(七)...2007-03-03remote script文檔(轉(zhuǎn)載自微軟)(四)
remote script文檔(轉(zhuǎn)載自微軟)(四)...2007-03-03