Remote Scripting進階圖文說明教程---使 Remote Scripting 在服務器頁中有效果
發表時間:2024-01-13 來源:明輝站整理相關軟件相關文章人氣:
[摘要]除了對客戶頁進行配置以便于調用遠程腳本外,您還必須對自己的服務器頁進行配置,以便于對它們進行接收。其做法包括下面這些步驟: 包含 remote scripting 服務器庫,并對其進行初始化。 編寫客戶頁能調用的函數或者例程。 將自己的函數和例程顯露為方法。 缺省的情況是,客戶腳本所調用的某個 A...
除了對客戶頁進行配置以便于調用遠程腳本外,您還必須對自己的服務器頁進行配置,以便于對它們進行接收。其做法包括下面這些步驟:
包含 remote scripting 服務器庫,并對其進行初始化。
編寫客戶頁能調用的函數或者例程。
將自己的函數和例程顯露為方法。
缺省的情況是,客戶腳本所調用的某個 ASP 頁并不顯示在瀏覽器中──而是簡單地在服務器上執行并將結果送到客戶端。因此,作為規則,您無需在 ASP 頁中包括進任何 HTML 文本,而只需腳本。不過,還是有可能在某個 ASP 頁上調用包括 HTML 文本的方法并作正常顯示的,只要您初始化了 remote scripting 服務器庫,并用下面描述的技巧顯露頁的方法。
包括并初始化 remote scripting 服務器庫
創建服務器端引用 Rs.asp 文件的 INCLUDE 語句,如下例所示:
<!--#INCLUDE FILE="../_ScriptLibrary/RS.ASP"-->
確保為 Rs.asp 文件指定正確路徑。INCLUDE 語句可以出現在用戶文件的任何位置。
將一個調用插入到RSDispatch方法中,當您從客戶腳本調用服務器腳本時,可用該方法找到正確過程。該調用可能看起來如下所示:
<% RSDispatch %>
RSDispatch 調用必須是運行在該頁上的第一個服務器腳本。按慣例,典型做法是將其放到文件頭部。
在合適的初始化動作中,創建用戶將從客戶腳本中作為方法調用的函數或者例程。您可以用任何腳本語言書寫過程。過程可以接受任意數目的參數,但參數只可以為字符串、數字、日期,或者其他簡單數據類型──客戶不能將結構化數據(例如,對象或者數組)作為參數。
注意 當您將參數從客戶腳本傳遞到服務器腳本時,它們即被轉換為字符串。如果用戶期望自己的服務器方法中有不同數據類型,可以在方法腳本內部轉換之。
在服務器腳本中創建了過程后,您必須將它們作為方法顯露出來。為了達到該目的,您可以創建一個 JavaScript 公共描述對象,并列出用戶希望顯露的方法。
顯露方法
創建一個 public_description 對象,該對象為您的方法指定構造函數。下面的示例命名構造函數為 MyServerMethods:
<SCRIPT LANGUAGE="JavaScript">
var public_description = new MyServerMethods();
創建您在 public_description 對象中指定的構造函數。在構造函數內部,指定用戶希望顯露的方法名,以及它們相應的函數或者例程名。用戶所使用的語法取決于用戶是在 JavaScript 中還是在 VBScript 中創建自己的方法。可使用下面的語法:
functionconstructor(){
this.methodName = functionName //對于 JavaScript 方法來說
// 對于用 VBScript 書寫的方法,使用下面的語法
this.methodName = Function('p1','p2','return functionName(p1,p2)')
}
注意 JavaScript 是大小寫敏感的,因此用戶必須根據約定正確大寫。
其中:
methodName 將被顯露的方法名。
functionName 服務器頁中實現 methodName 的函數名。
p1, p2 傳遞給方法的參數列表──如果有參數的話。僅當該方法在 VBScript 中實現時,才能以這種方式顯式地聲明參數。參數名在構造函數內必須是一致的,但不需要和用戶在方法本身中所使用的參數名匹配。用戶不需要顯式地聲明傳遞給 JavaScript 中所實現方法的參數。
下面的示例顯示了一個完整的 ASP 頁,該頁顯露兩個方法,square 和 add,這可以從客戶腳本中調用。square 方法是在 JavaScript 中實現的,而 add 方法則是在 VBScript 中實現的。
<% RSDispatch %>
<!--#INCLUDE FILE="../_ScriptLibrary/RS.ASP"-->
<SCRIPT RUNAT=SERVER LANGUAGE="JavaScript">
var public_description = new MyServerMethods();
function MyServerMethods()
{
this.square = squareNumber;
this.add = Function( 'n1','n2','return addNumbers(n1,n2)' );
}
function squareNumber(numberToSquare){
return numberToSquare * numberToSquare;
}
</SCRIPT>
<SCRIPT RUNAT=SERVER LANGUAGE="VBScript">
Function addNumbers(num1, num2)
' 數據類型發生轉換,因為它們作為字符串進行傳遞
addNumbers = CInt(num1) + CInt(num2)
End Function
</SCRIPT>