AJAX 入門:第四個範例
The following examples had been tested on Mozilla's Firefox and Microsoft's IE. The document is provided as is. You are welcomed to use it for non-commercial purpose.Written by: 國立中興大學資管系呂瑞麟
請勿轉貼
看其他教材
在這個範例中,我們需要寫一個網頁來讀取 XML 檔案;使用者有兩種方式來決定 XML 檔案的名稱,一種是讓使用者輸入該 XML 檔案的 URL,另一種是讀取伺服器端 的 XML 檔。如果使用者選擇 URL,則網頁出現一個文字欄位讓使用者輸入 URL; 若使用者選擇讀取伺服器端的 XML 檔,則網頁出現下拉式選單顯示伺服器端所有的 XML 檔的檔名(須能自動產生);最後,當使用者按確定後,則出現 XML 檔案的內容。
範例說明:
- 設計 HTML 元件,其內容如下:
<form name="myform" method="GET" action="/jlu/servlet/DOMServ"> 請選擇: <input type="radio" name="xml" value="url" onClick="display();">自行輸入網址</input> <input type="radio" name="xml" value="xml" onClick="callServer();">選擇現有的 XML 檔</input> <br/> <div id="label" class="on"> </div> </form>
如果使用者選擇"自行輸入網址",display() 會被呼叫,其程式碼如下。該程式碼 只是把文字欄位以及確定按鈕加到 label 內。
function display() { // 顯示文字欄位 document.getElementById("label").innerHTML = '請輸入網址:' + '<input type="text" name="file" size="40"></input>
<input type="submit" value="確定"></input>'; }
- 完整原始碼:
<script type="text/javascript" language="javascript"> function display() { // 顯示文字欄位 document.getElementById("label").innerHTML =
'請輸入網址:<input type="text" name="file" size="40"></input>
<input type="submit" value="確定"></input>'; } function callServer() { document.getElementById("label").innerHTML = ""; var http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; } // 定義事件處理函數為 alterContents() http_request.onreadystatechange = function() { alertContents(http_request); }; var url = "/jlu/servlet/retFiles"; http_request.open('GET', url, true); http_request.send(null); } function alertContents(http_request) { if (http_request.readyState == 4) { if (http_request.status == 200) { var restext = http_request.responseText.split("|"); var mesg = '<select name="file">'; for(var i=0; i<restext.length-1; i++) { mesg += '<option value="' + restext[i]; if(i == 0) mesg += '" selected="1">'; else mesg += '">'; mesg += restext[i] + '</option>'; } mesg += '</select>'; mesg += '<input type="submit" value="確定"></input>'; document.getElementById("label").innerHTML = mesg; } else { alert('There was a problem with the request.'); } } } </script>
Written by: 國立中興大學資管系呂瑞麟
沒有留言:
張貼留言