直播中
包含 remote scripting 服務(wù)器庫(kù),并對(duì)其進(jìn)行初始化。
編寫客戶頁(yè)能調(diào)用的函數(shù)或者例程。
將自己的函數(shù)和例程顯露為方法。
缺省的情況是,客戶腳本所調(diào)用的某個(gè) ASP 頁(yè)并不顯示在瀏覽器中──而是簡(jiǎn)單地在服務(wù)器上執(zhí)行并將結(jié)果送到客戶端。因此,作為規(guī)則,您無(wú)需在 ASP 頁(yè)中包括進(jìn)任何 HTML 文本,而只需腳本。不過(guò),還是有可能在某個(gè) ASP 頁(yè)上調(diào)用包括 HTML 文本的方法并作正常顯示的,只要您初始化了 remote scripting 服務(wù)器庫(kù),并用下面描述的技巧顯露頁(yè)的方法。
包括并初始化 remote scripting 服務(wù)器庫(kù)
創(chuàng)建服務(wù)器端引用 Rs.asp 文件的 INCLUDE 語(yǔ)句,如下例所示:
<!--#INCLUDE FILE="../_ScriptLibrary/RS.ASP"-->
確保為 Rs.asp 文件指定正確路徑。INCLUDE 語(yǔ)句可以出現(xiàn)在用戶文件的任何位置。
將一個(gè)調(diào)用插入到RSDispatch方法中,當(dāng)您從客戶腳本調(diào)用服務(wù)器腳本時(shí),可用該方法找到正確過(guò)程。該調(diào)用可能看起來(lái)如下所示:
<% RSDispatch %>
RSDispatch 調(diào)用必須是運(yùn)行在該頁(yè)上的第一個(gè)服務(wù)器腳本。按慣例,典型做法是將其放到文件頭部。
在合適的初始化動(dòng)作中,創(chuàng)建用戶將從客戶腳本中作為方法調(diào)用的函數(shù)或者例程。您可以用任何腳本語(yǔ)言書寫過(guò)程。過(guò)程可以接受任意數(shù)目的參數(shù),但參數(shù)只可以為字符串、數(shù)字、日期,或者其他簡(jiǎn)單數(shù)據(jù)類型──客戶不能將結(jié)構(gòu)化數(shù)據(jù)(例如,對(duì)象或者數(shù)組)作為參數(shù)。
注意 當(dāng)您將參數(shù)從客戶腳本傳遞到服務(wù)器腳本時(shí),它們即被轉(zhuǎn)換為字符串。如果用戶期望自己的服務(wù)器方法中有不同數(shù)據(jù)類型,可以在方法腳本內(nèi)部轉(zhuǎn)換之。
在服務(wù)器腳本中創(chuàng)建了過(guò)程后,您必須將它們作為方法顯露出來(lái)。為了達(dá)到該目的,您可以創(chuàng)建一個(gè) JavaScript 公共描述對(duì)象,并列出用戶希望顯露的方法。
顯露方法
創(chuàng)建一個(gè) public_description 對(duì)象,該對(duì)象為您的方法指定構(gòu)造函數(shù)。下面的示例命名構(gòu)造函數(shù)為 MyServerMethods:
<SCRIPT LANGUAGE="JavaScript">
var public_description = new MyServerMethods();
創(chuàng)建您在 public_description 對(duì)象中指定的構(gòu)造函數(shù)。在構(gòu)造函數(shù)內(nèi)部,指定用戶希望顯露的方法名,以及它們相應(yīng)的函數(shù)或者例程名。用戶所使用的語(yǔ)法取決于用戶是在 JavaScript 中還是在 VBScript 中創(chuàng)建自己的方法。可使用下面的語(yǔ)法:
functionconstructor(){
this.methodName = functionName //對(duì)于 JavaScript 方法來(lái)說(shuō)
// 對(duì)于用 VBScript 書寫的方法,使用下面的語(yǔ)法
this.methodName = Function('p1','p2','return functionName(p1,p2)')
}
注意 JavaScript 是大小寫敏感的,因此用戶必須根據(jù)約定正確大寫。
其中:
methodName 將被顯露的方法名。
functionName 服務(wù)器頁(yè)中實(shí)現(xiàn) methodName 的函數(shù)名。
p1, p2 傳遞給方法的參數(shù)列表──如果有參數(shù)的話。僅當(dāng)該方法在 VBScript 中實(shí)現(xiàn)時(shí),才能以這種方式顯式地聲明參數(shù)。參數(shù)名在構(gòu)造函數(shù)內(nèi)必須是一致的,但不需要和用戶在方法本身中所使用的參數(shù)名匹配。用戶不需要顯式地聲明傳遞給 JavaScript 中所實(shí)現(xiàn)方法的參數(shù)。
下面的示例顯示了一個(gè)完整的 ASP 頁(yè),該頁(yè)顯露兩個(gè)方法,square 和 add,這可以從客戶腳本中調(diào)用。square 方法是在 JavaScript 中實(shí)現(xiàn)的,而 add 方法則是在 VBScript 中實(shí)現(xiàn)的。
<% 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)
' 數(shù)據(jù)類型發(fā)生轉(zhuǎn)換,因?yàn)樗鼈冏鳛樽址M(jìn)行傳遞
addNumbers = CInt(num1) + CInt(num2)
End Function
</SCRIPT>