基于 asp+ajax 和数据库驱动的二级联动菜单, 需要的朋友可以参考下。
index.asp 页面代码
<!-#Включите файл = conn.asp->
<%
Установить cmd = conn.execute (выберите BigClassid, BigClassName из BigClass)
tempid = cmd (bigclassid)
%>
<SELECT NAME = MENU ONCHANGE = GETABCATEGORY (this.value);>
<%
Если не cmd.eo, то
делать, пока не cmd.eof
bigclassid = cmd (bigclassid)
bigclassname = cmd (bigclassname)
%>
<option value = <%= bigclassid%>> <%= bigclassname%> </option>
<%
Cmd.movenext
петля
конец, если
Cmd.close
установить cmd = ничего
%>
</select>
<div id = подкласс>
<SELECT NAME = SAMENU>
<%
Установить cxd = conn.execute (выберите * из SmallClass, где bigclassid = & tempid)
Если не cxd.eo, то
делать, пока не cxd.eof
SmallClassid = cxd (SmallClassid)
SmallClassName = CXD (SmallClassName)%>
<vitor value = <%= smallclassid%>> <%= smallclassname%> </option>
<%
Cxd.movenext
петля
Cxd.close
Установить CXD = ничего
еще
html = <select name = 'smallclassid'> <option value = '0' selected> 暂无小类 </option> </select>
Ответ.write html
конец, если
%>
</select>
</div>
ajax.js 代码
// документ Javascript
Функция createxmlhttp ()
{
xmlhttpobj = false;
пытаться{
xmlhttpobj = new xmlhttprequest;
} catch (e) {
пытаться{
xmlhttpobj = new activexobject (msxml2.xmlhttp);
} catch (e2) {
пытаться{
xmlhttpobj = new activexobject (microsoft.xmlhttp);
} catch (e3) {
xmlhttpobj = false;
}
}
}
вернуть xmlhttpobj;
}
функция getSubcategory (bigclassid) {
if (bigclassid == 0) {
document.getElementById (subclass) .innerHtml = <select name = 'smallClassid'> <vical value = '0' Selected> 选择二级分类 </option> </select>;
возвращаться;
};
var xmlhttpobj = createxmlhttp ();
if (xmlhttpobj) {// 如果创建对象 xmlhttpobj 成功
xmlhttpobj.onreadystatechange = handle;
xmlhttpobj.open ('get', getsubcategory.asp? bigclassid =+bigclassid+& number =+math.random (), true); // get 方法 加个随机数。
xmlhttpobj.send (null);
}
}
функция handle () {// 客户端监控函数
//if(xmlhttpobj.readystate==4)_// 服务器处理请求完成
if (xmlhttpobj.status == 200) {
// alert ('ok');
var html = xmlhttpobj.responsetext; // 获得返回值
document.getElementById (подкласс) .innerHtml = html;
}еще{
document.getElementById (подкласс) .innerHtml = 对不起 , 您请求的页面有问题 ...;
}
//}
//еще{
//document.getElementByid(subclass).innerhtml=xmlhttpobj.readystate ;// 服务器处理中
//}
//}
}
getsubcategory.asp 代码
<%@language = VBScript CodePage = 936%>
<!-#Включите файл = conn.asp->
<%
response.charset = gb2312
bigclassid = safe (request.querystring (bigclassid))
Если BigClassid <> Then
Установите RE = новая режима
re.ignorecase = true
re.global = false
re.pattern = ^[0-9] {1,3} $
Если не re.test (bigclassid), тогда
Ответ.write 非法参数
response.end
конец, если%>
<%при ошибке резюме следующим
Установить p = conn.execute (выберите * из SmallClass, где bigclassid = & bigclassid)
Если ошибка, тогда
err.clear
Ответ.write 查询出错
response.end
конец, если
Если не P.EOF, тогда
html = <select name = 'select2'> & vbnewline
делать, пока не P.
html = html & <vitue value = '& p (smallclassid) &'> & p (smallclassname) & </option> & vbnewline
P.movenext
петля
html = html & </select>
еще
html = <select name = 'smallclassid'> <option value = '0' selected> 暂无小类 </option> </select>
конец, если
P.Close
Установить p = ничего
Conn.close
установить conn = ничего
response.write html
html =
конец, если
%>