不錯的remote script文檔載自微軟)(三)

來源:互聯網
上載者:User

文檔: 使 Remote Scripting 在伺服器頁中有效

除了對客戶頁進行配置以便於調用遠程指令碼外,您還必須對自己的伺服器頁進行配置,以便於對它們進行接收。其做法包括下面這些步驟:

包含 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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.