Web 基本上是一個分散的系統,所有的計算和處理,都由用戶端和伺服器來共同完成,用戶端的電腦執行的是網頁中的 Client-side Scripts,而伺服器則是執行網頁中的 Server-side Scripts。在 http 的協定下,每當使用者發出一個 Request 之後,伺服器就會執行網頁中的 Server-side Scripts (如 ASP),並將結果傳回給用戶端,再由用戶端的瀏覽器來執行網頁中的 Client-side Scripts(如 JavaScript 或 VBScript),並將結果顯示在螢幕上。如果還要存取伺服器端的資料,就必須再一次經由表單的送出,才能指揮伺服器做事,並將結果以新的網頁資料回傳,造成換頁,因此要保存原先網頁的資訊(或狀態)就比較麻煩。在這種不斷換頁的情況下,網頁設計較繁瑣,流程也會比較不順。因此,我們是否能由 Client-side Scripts 所接收的事件(如滑鼠點選某一按鈕)來指揮 Server-side Scripts 做事,並在不換頁的情況下,將 Server-side Scripts 的執行結果悄悄地送回 Client-side Scripts 並顯示結果於同一個網頁?答案是肯定的,而且方法不只一種,本章將說明如何使用下列兩種方式來達成此種「非同步傳輸」的功能:
- 使用隱藏式的 iframe:這是一種比較傳統的方式,但是使用方式也比較受限。
- 使用 AJAX:這是一種比較常用的方式,使用方式也比較有彈性。
AJAX 的全名是「Asynchronous JavaScript And XML」,翻成中文是「非同步式的 JavaScript 與 XML」,但這並不是一個全新的技術,而是由數種既有的技術所形成的網頁設計方式,包含
早在 AJAX 這個名詞出現前,這種非同步網頁傳送方式已經被應用在各個網站,只是在 Google 大量運用此技術於 Gmail、Google Maps 等應用程式等後,才造成 AJAX 的一股風潮。採用 AJAX 可以提供下列好處:
- HTML 及 CSS:負責顯示結果。
- JavaScript:負責近端的事件擷取及資料處理,並大量運用 DOM (Document Object Model) 來讀取由伺服器回傳的資料,資料格式可能是 XML 或是 HTML。
- XMLHttpRequest物件:負責以非同步的方式來執行遠端的程式,並接收相關的結果。
但是,它也有下列幾項缺點:
- 簡化網頁流程設計。
- 降低網路資料流量。
- 因為不換頁,因此無法使用「上一頁」、「下一頁」來顯示所需的網頁。
- 搜尋引擎無法直接對動態資料建立索引,因此不利於搜尋。
JScript 程式設計與應用:用於伺服器端的 ASP 環境