2.5 遠程腳本

我們已經介紹了Ajax,下面來簡單談談遠程腳本。你可能會想:“Ajax有什麼大不了的?我早就用IFRAME做過同樣的事情。”實際上,我們自己也曾用過這種方法。這在以前一般稱爲遠程腳本(remote scripting),很多人認爲這只是一種修修補補。不過,這確實提供了一種能避免頁面刷新的機制。
2.5.1  遠程腳本概述
基本說來,遠程腳本是一種遠程過程調用類型。你可以像正常的Web應用一樣與服務器交互,但是不用刷新整個頁面。與Ajax類似,你可以調用任何服務器端技術來接收請求、處理請求並返回一個有意義的結果。正如在服務器端有很多選擇,客戶端同樣有許多實現遠程腳本的選擇。你可以在應用中嵌入Flash動畫、Java applet,或者ActiveX組件,甚至可以使用XML-RPC,但是這種方法過於複雜,因此除非你使用這種技術很有經驗,否則這種方法不太合適。實現遠程腳本的通常做法包括將腳本與一個IFRAME(隱藏或不隱藏)結合,以及由服務器返回JavaScript,然後再在瀏覽器中運行這個JavaScript。
Microsoft提供了自己的遠程腳本解決方案,並聰明地稱之爲Microsoft遠程腳本(Microsoft Remote Scripting,MSRS)。採用這種方法,可以像調用本地腳本一樣調用服務器腳本。頁面中嵌入Java applet,以便與服務器通信,.asp頁面用於放置服務器端腳本,並用.htm文件管理客戶端的佈局擺放。在Netscape和IE 4.0及更高版本中都可以使用Microsoft的這種解決方案,可以同步調用,也可以異步調用。不過,這種解決方案需要Java,這意味着可能還需要附加的安裝例程,而且還需要Internet Information Services(IIS),因此會限制服務器端的選擇。
Brent Ashley爲遠程腳本創建了兩個免費的跨平臺庫。JSRS是一個客戶端JavaScript庫,它充分利用DHTML向服務器做遠程調用。相當多的操作系統和瀏覽器上都能使用JSRS。如果採用一些常用的、流行的服務器端實現(如PHP、Python和Perl CGI),JSRS一般都能在網站上安裝並運行。Ashley免費提供了JSRS,而且還可以從他的網站(www.ashleyit.com
/rs/main.htm
)上得到源代碼。
如果你覺得JSRS太過笨重,Ashley還創建了RSLite,這個庫使用了cookie。RSLite僅限於少量數據和單一調用,不過大多數瀏覽器都能提供支持。
2.5.2  遠程腳本的示例
爲了進行比較,這裏向你展示如何使用IFRAME來實現類似Ajax的技術。這非常簡單,而且過去我們就用過這種方法(在XMLHttpRequest問世之前)。這個示例並沒有真正調用服務器,只是想讓你對如何使用IFRAME實現遠程腳本有所認識。
這個示例包括兩個文件:iframe.html(見代碼清單2-2)和server.html(見代碼清單2-3)。server.html模擬了本應從服務器返回的響應。
代碼清單2-2 iframe.html文件
<html>
   <head>
     <title>Example of remote scripting in an IFRAME</title>
   </head>
   <script type="text/javascript">
     function handleResponse() {
       alert('this function is called from server.html');
     }
   </script>
   <body>
   <h1>Remote Scripting with an IFRAME</h1>
 
   <iframe id="beforexhr"
   name="beforexhr"
   style="width:0px; height:0px; border: 0px"
   src="blank.html"></iframe>
 
   <a href="server.html" target="beforexhr">call the server</a>
 
   </body>
</html>
代碼清單2-3 server.html文件
<html>
   <head>
     <title>the server</title>
   </head>
   <script type="text/javascript">
     window.parent.handleResponse();
   </script>
   <body>
   </body>
</html>
圖2-2顯示了最初的頁面。運行這個代碼生成的結果如圖2-3所示。
圖2-2 最初的頁面
圖2-3 調用“服務器”之後的頁面
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章