台灣最大的程式設計社群網站
線上人數
1044
 
會員總數:355150
討論主題:190953
免費程式:2730
歡迎您免費加入會員
首頁 >> 程式下載 >> 程式資料檢視
程式資料
名稱 ASP使用AJAX多層下拉選單範例(3+2郵遞區號)
類別 其他 使用者介面 網頁系統
程式語言 ASP 開發狀態 100% - 成熟
語系 繁體中文 難易度 難度四(進階使用者,具相當程式基礎)
原創者 topcat  原創者網址  
提供者 topcat 捐贈 VP 給 topcat 執行網址  
版權 開放源碼 評分
(共有 16 人投票,總分 63)
我要評分 : 不好<- 1 2 3 4 5 -> 很好   這個程式不能有問題歐! 加入我的收藏夾!
說明
偶然機會看到同事在討論多層下拉選單問題
心想這個寫成AJAX方式應該不難
所以動手寫了這樣的範例
提供有需要的人參考
預覽畫面
目前尚無任何預覽畫面
檔案列表
檔名 : PAJAXDEMO.zip  下載數:754
檔案大小:1865103 Bytes  上傳時間:2006-06-22 17:19
下載此檔案
--
解壓縮後將該目錄加入虛擬目錄
主要用到兩個ASP
Client端畫面:post32.asp
Server端程式:ajax/GetData.asp
主要是透過XmlHttp啟動Server端的asp讀取相關資料,透過,連接的字串傳回結果
Client端再拆解字串→產生選項
網友回應  
如要發送訊息請先登入.
如何解壓縮 在程式堆裡迷失的人 [2010-09-04 14:15]
您好:
我下載之後,用winrar解壓縮,可是好像也是一個檔案夾,但是不知如何開啟
回應 : 如何解壓縮 [2010-09-06 22:43] topcat
小喵下載解壓縮也怪怪的,後來發現解開的檔案,再改副檔名為RAR
然後再解壓縮一次就可以了

試過IE7.0可以使用 但是FireFox會無法動捏 Scott.Chiang [2009-08-12 21:54]
試過IE7.0可以使用 但是FireFox會無法動捏

有試過加入

if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}


但還是不行!反而讓IE也不動了

幫幫忙看看嚕

請問如果是要跨TABLE搜尋且VALUE跟NAME存不同值 光子 [2007-10-23 11:25]
多謝喵大的程式
不過小的現在有些小問題
如果我想要的是要跨資料表的搜尋
而且出來的DATA是想要類似如下
<OPTION value=<%=vntPara1(i,0)%>><%=vntPara1(i,1)%></OPTION>
<OPTION value=0001><台北></OPTION>
<OPTION value=0002><台中></OPTION>
<OPTION value=0003><台南></OPTION>

那這樣資料再xml間傳遞的時候我可以用array的格式嗎 還是@@!?


新手的問題很怪>< 希望您幫忙解答一下了 感謝 <(_ _)>
回應 : 請問如果是要跨TABLE搜尋且VALUE跟NAME存不同值 [2007-10-23 20:45] topcat
了解Ajax的精神,就能夠衍生想法
asp的Ajax主要是透過JavaScript裡面xmlhttp啟動Server端的asp
然後再處理傳回來的資訊

因此不論傳回來的是陣列、還是xml
就看您自己怎麼去處理了

^_^

不知道這是不是你要的 lynn [2007-09-29 14:57]
北極熊大發
我知道你的問題,我也有遇到相同的問題。
可是我有去試出來,你參考看看,看有沒有問題。
只有更改到post32.asp的部份
===========================================================================
假設會員資料的地址是彰化縣、彰化市
<%
tmpCity="彰化縣"
tmpArea="彰化市"
%>
在script裡多一個function
function tmpArea_onchange(a) {
//呼叫xmlhttp啟動Server程式
var rc=GetData('Area',a);

//產生下一階查詢
GenSlt('Area',rc);
}

更改<body>這行
為<BODY <%if tmpCity<>"" then%>onLoad="tmpArea_onchange('<%=tmpCity%>');"<%end if%>>

在城市的部份,
增加帶預設值的部份
<OPTION value="<%=rs.Fields(0).Value%>" <%if tmpCity=rs.Fields(0).value then%>selected<%end if%>><%=rs.Fields(0).Value%></OPTION>
===============================================================
我只有試縣、市而已,所以若你要試到路、號的話,
要再試試囉。

小小疑問 lynn [2007-09-19 11:16]
我將getdata.asp放在和post32.asp同一層,post32.asp的getdata function略作修改
本來是「var strURL='AJAX/GetData.asp?RType=' + RType + '&KeyData=' + KeyData;」
改成「var strURL='GetData.asp?RType=' + RType + '&KeyData=' + KeyData;」
但在執行時,選城市正常,但選「區」的選項就變得很奇怪。請topcat有空試看看!

您說的我懂 北極熊大發 [2006-06-27 21:35]
這在下載您的程式後...就已初步了解了程式的運作

我的想法是...如果將您的程式範例應用到會員申請資料時去使用...
當使用者第一次註冊時,會寫入個人資料進去資料庫存放...
而使用者會想要修改資料...我要如何將他的個人資料對應到選項呢

例如:
"Select Userid,UserName,City,Area,Road,Num From UserData Where in ('" & Userid & "')"
我從資料表中撈出使用者註冊時填入的個人資料供其修改

但我要如何將撈出來的使用者的住址資料和你的3+2郵遞區號相對應
也就是讓該選項 selected

不知道這樣說...會不會比較了解=.=

我有一點不懂... 北極熊大發 [2006-06-27 15:40]
ASP

當我寫入資料入資料庫後,我要如何將資料再對應到選項呢
ex.
如台南市中西區

當我從資料庫調出資料要修改時,我只能讓第一個選項停留在台南市,而第二個選項要如何對應呢?

小弟看了很多AJAX的範例,但就是這一點一直搞不懂=.=
請您撥空為我解答^^
回應 : 我有一點不懂... [2006-06-27 20:44] topcat
請您看一下這個範例中的Post32.asp中
當第一個選項選了台南市→觸發OnChange
呼叫GetData並把目前的控制項目(City)以及選擇的資料(台南市)透過xmlhttp傳回Server
啟動Server端的GetData.asp

Server端的GetData依照傳入的控制項(City)與資料(台南市),撈出相關的資料後,串成字串,使用Response.Write將資料送出

Client端(var rc=xmlhttp.responseText;)取得Server端傳回的資料
然後Client端Script將項目拆解後,產生下一個選項的Option(請看funcation GenSlt)
這樣第二個選項的東西就出現了
^_^

TOPCAT很棒喔 Tim [2006-06-23 15:57]
一直沒很認真的接觸ajax,剛剛看了你的範例,感覺很棒
不過對於你判斷五碼郵遞區號的資料來源
也是一個好奇點∼你有五碼對照的參考資料阿?
回應 : TOPCAT很棒喔 [2006-06-23 21:06] topcat
3+2的郵遞區號原始資料,可以從郵局的官方網站下載Excel檔案
再匯入Access或者SQL來使用
兒小喵範例中的,則是藉著之前下載David大大的上課範例中所附的直接複製來用
在此也特別感謝David大大的上課範例檔
^_^