使用 ajax 二级联动的问题
从网上下载了二级联动代码
我想把修改一下 把它修改成使用现在的数据表cityclass(见后面)
对ajax我不是很熟悉,修改了一上午也没有成功,请高手帮忙修改一下。
现在的程序只能显示 省的id 但是一换成省的名称时显示市的时候 就会出错。
想要得效果就是 显示省 --〉选择某个省---〉显示对应的市
一、注册文件 reg.asp
<script language="javascript" defer="defer">
/*说明:二级无刷新连动*/
//封装一个xmlhttp与服务器端进行交互
function ajax(objstr)
{
//接收传递参数
string="objstr="+escape(objstr);
//alert(string);
//建立对象
var objXMLHTTP = null;
try
{
objXMLHTTP = new ActiveXObject("MSXML2.XMLHTTP");
}
catch(e)
{
try
{
objXMLHTTP = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e2){}
}
//发送数据
objXMLHTTP.open("POST", "ajax.asp", false);
objXMLHTTP.setrequestheader("content-length",string.length);
objXMLHTTP.setrequestheader("content-type","application/x-www-form-urlencoded");
objXMLHTTP.send(string);
//得到服务器端返加值
return objXMLHTTP.responseText;
}
//封装返回省级数据
function city(objstr,objselect)
{
var _Array=ajax(objstr);
var objselect=eval("document.all."+objselect);
//加入select值前先清空其所有值
//alert(_Array);
objselect.length=0;
var split_Array=_Array.split("|");
for(i=0;i<split_Array.length;i++)
{
objselect.options.add(new Option(split_Array,split_Array));
}
}
//封装返回Select选中值
function getSelectValue(id)
{
var oSel = document.all(id);
return oSel.options[oSel.selectedIndex].value;
}
//封装改变菜单产生事件city1
function id_change()
{
city(getSelectValue("id"),"shi");
}
//第一次载入页面初始化select
city("0","id");
city(getSelectValue("id"),"shi");
</script>
<!--二级无刷新连动javascript结束-->
<select name="id" >
<option value="" selected >省</option>
</select>
<select name="shi">
<option value="" selected>市</option>
</select>
二、ajax.asp
<%
Dim StrServer,StrUid,StrSaPwd,StrDbName
StrServer="dataliu" '数据库服务器名
StrUid="as" '您的登录帐号
StrSaPwd="" '您的登录密码
StrDbName="data" '您的数据库名称
Dim conn '数据库连接
Dim connstr '数据库连接字符串
c&StrServer&";uid="&StrUid&";pwd="&StrSaPwd&";database="&StrDbName
'建立和数据库master的连接
set conn = Server.CreateObject("ADODB.Connection")
conn.open connstr
Response.CharSet = "gb2312"
Dim rs,area,areaname,objstr,strsql
area=""
'--------------得到省参数
objstr=request("objstr")
'--------------根据参数读取相应的下级型号
Set rs=Server.CreateObject("ADODB.RecordSet")
strsql="select * from cityclass where parentid='"&objstr&"' order by classid"
rs.open strsql,conn,1,1
'--------------循环得到数组并返回客户端
for i=1 to rs.recordcount
if i=1 then
area=rs("id")
else
area=area&"|"&rs("id")
end if
rs.movenext
next
'--------------返回数据
response.write area
%>
三、数据表(cityclass)
classid id classname parentid
1 1 山东 0
3 2 济南 1
5 3 青岛 1
8 4 安徽 0
9 5 黄山 3
10 6 合肥 3
|