文檔: 調用 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 調用時,如何檢查錯誤的詳細資料,請參閱檢查錯誤。