DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX基礎知識 >> 利用XMLHTTP實現的二級連動Select
利用XMLHTTP實現的二級連動Select
編輯:AJAX基礎知識     
這是繼 "利用XMLHTTP無刷新獲取數據" 的另一篇關於XMLHTTP的應用. 
關於XMLHTTP.可以說,是一個很好的接合劑.把客戶端和服務端的距離拉近了. 
利用XMLHTTP.我們可以實現很多好的想法. 
這文章.實現了二級連動Select. 
傳統二級連動是把所有的數據都傳到有客戶端.. 
利用XMLHTTP.我們可以實時地返回我們所需要的數據. 
select.htm 
復制代碼 代碼如下:
<script language="Javascript"> 
function GetResult(str) 

/* 
 *--------------- GetResult(str) ----------------- 
 * GetResult(str)  
 * 功能:通過XMLHTTP發送請求,返回結果. 
 * 參數:str,字符串,發送條件. 
 * 實例:GetResult(document.all.userid.value); 
 * author:wanghr100(灰豆寶寶.net) 
 * update:2004-5-27 19:02 
 *--------------- GetResult(str) ----------------- 
 */ 
    var oBao = new ActiveXObject("Microsoft.XMLHTTP"); 
    oBao.open("POST","Server.asp?sel="+str,false); 
    oBao.send(); 
    //服務器端處理返回的是經過escape編碼的字符串. 
    //通過XMLHTTP返回數據,開始構建Select. 
    BuildSel(unescape(oBao.responseText),document.all.sel2) 

function BuildSel(str,sel) 

/* 
 *--------------- BuildSel(str,sel) ----------------- 
 * BuildSel(str,sel)  
 * 功能:通過str構建Select. 
 * 參數:str,字符串,由服務端返回的.有特定結構"字符串1,字符串2,字符串3" 
 * 參數:sel,要構建的Select 
 * 實例:BuildSel(unescape(oBao.responseText),document.all.sel2) 
 * author:wanghr100(灰豆寶寶.net) 
 * update:2004-5-27 19:02 
 *--------------- BuildSel(str,sel) ----------------- 
 */ 
    //先清空原來的數據. 
    sel.options.length=0; 
    var arrstr = new Array(); 
    arrstr = str.split(","); 
    //開始構建新的Select. 
    for(var i=0;i<arrstr.length;i++) 
    { 
        sel.options[sel.options.length]=new Option(arrstr,arrstr) 
    } 

</script> 
<select name="sel" onChange="GetResult(this.value)"> 
<option value="">請選擇 
<option value="福建省">福建省 
<option value="湖北省">湖北省 
<option value="遼寧省">遼寧省 
<select> 
<select name="sel2"></select>

server.asp  服務器端處理. 
復制代碼 代碼如下:
<% @Language="Javascript" %> 
<% 
function OpenDB(sdbname) 

/* 
 *--------------- OpenDB(sdbname) ----------------- 
 * OpenDB(sdbname)  
 * 功能:打開數據庫sdbname,返回conn對象. 
 * 參數:sdbname,字符串,數據庫名稱. 
 * 實例:var conn = OpenDB("database.mdb"); 
 * author:wanghr100(灰豆寶寶.net) 
 * update:2004-5-12 8:18 
 *--------------- OpenDB(sdbname) ----------------- 
 */ 
    var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname); 
    var conn = Server.CreateObject("ADODB.Connection"); 
    conn.Open(connstr); 
    return conn; 

var oConn = OpenDB("data.mdb"); 
var province = Request("sel"); 
var arrResult = new Array(); 
var sql = "select city from china where province='"+province+"'"; 
var rs = Server.CreateObject("ADODB.Recordset"); 
rs.Open(sql,oConn,1,1); 
while(!rs.EOF) 

    //遍歷所有適合的數據放入arrResult數組中. 
    arrResult[arrResult.length] = rs("city").Value; 
    rs.MoveNext(); 

//escape解決了XMLHTTP。中文處理的問題. 
//數組組合成字符串.由","字符串連接. 
Response.Write(escape(arrResult.join(","))); 
%>

數據庫設計 
data.mdb 
表china. 
字段 
id  自動編號 
province 文本 
city  文本 
表:china 數據:  
id province city 
1 福建省  福州市 
2 福建省  廈門市 
3 福建省  泉州市 
4 湖北省  武漢市 
5 湖北省  荊州市 
6 湖北省  宜昌市 
7 遼寧省  沈陽市 
8 遼寧省  大連市 
9 遼寧省  盤錦市
XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved