基于 ASP+AJAX 和数据库驱动的二级联动菜单 ، 需要的朋友可以参考下。
index.asp 页面代码
<!-#تضمين ملف = conn.asp->
<٪
تعيين cmd = conn.execute (حدد bigclassid ، bigclassname من الفئران الكبيرة)
tempid = cmd (bigclassid)
٪>
<حدد name = menu onChange = getSubCategory (this.value) ؛>
<٪
إذا لم يكن cmd.eof ثم
افعل بينما لا cmd.eof
bigclassid = cmd (bigclassid)
BigClassName = CMD (BigClassName)
٪>
<value Option = <٪ = bigclassid ٪ >> <٪ = bigclassName ٪> </teport>
<٪
cmd.movenext
حلقة
إنهاء إذا
cmd.close
تعيين cmd = لا شيء
٪>
</select>
<div id = فئة فرعية>
<حدد الاسم = Menmenu>
<٪
SET CXD = CONN.EXECUTE (SELECT * من SmallSclass حيث bigclassid = & tempid)
إذا لم يكن cxd.eof ثم
افعل بينما لا cxd.eof
Smallcleassid = CXD (Smallclassid)
SmallClassName = CXD (SmallClassName) ٪>
<value Option = <٪ = smallclassid ٪ >> <٪ = smallClassName ٪> </portion>
<٪
CXD.Movenext
حلقة
CXD.Close
تعيين CXD = لا شيء
آخر
html = <select name = 'smallclassid'> <Option Value = '0' محدد> 暂无小类 </soph> </edread>
استجابة. write html
إنهاء إذا
٪>
</select>
</div>
ajax.js 代码
// وثيقة JavaScript
وظيفة CreatexMlHTTP ()
{
xmlhttpobj = false ؛
يحاول{
xmlhttpobj = new xmlhttprequest ؛
} catch (e) {
يحاول{
XMLHTTPOBJ = جديد ActiveXOBject (msxml2.xmlHttp) ؛
} catch (e2) {
يحاول{
XMLHTTPOBJ = New ActivexObject (Microsoft.xmlHttp) ؛
} catch (e3) {
xmlhttpobj = false ؛
}
}
}
إرجاع xmlhttpobj ؛
}
وظيفة getSubCategory (bigclassid) {
if (bigclassid == 0) {
document.getElementById (الفئة الفرعية) .innerhtml = <select name = 'smallclassid'> <ortion value = '0' select> 选择二级分类 </soph> </select> ؛
يعود؛
} ؛
var xmlhttpobj = createxmlhttp () ؛
if (xmlhttpobj) {// 如果创建对象 xmlhttpobj 成功
xmlhttpobj.onReadyStateChange = مقبض ؛
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->
<٪
استجابة. Charset = GB2312
Bigclassid = Safe (request.querystring (bigclassid))
إذا كان bigclassid <> ثم
تعيين re = جديد regexp
re.ignorecase = صحيح
re.global = false
re.pattern = ^[0-9] {1،3} $
إذا لم يكن إعادة اختبار (بيغ فئر) ثم
استجابة. write 非法参数
استجابة
نهاية إذا ٪>
<٪ على استئناف الخطأ التالي
set p = conn.execute (حدد * من الفئة الصغيرة حيث bigclassid = & bigclassid)
إذا أخطأ بعد ذلك
err.clear
استجابة. write 查询出错
استجابة
إنهاء إذا
إذا لم يكن p.eof ثم
html = <select name = 'select2'> & vbnewline
افعل بينما لا p.eof
html = html & <option value = '& p (smallclassid) &'> & p (smallclassname) & </point> & vbnewline
P.Movenext
حلقة
html = html & </select>
آخر
html = <select name = 'smallclassid'> <Option Value = '0' محدد> 暂无小类 </soph> </edread>
إنهاء إذا
P.Close
تعيين p = لا شيء
conn.close
تعيين conn = لا شيء
استجابة. write html
HTML =
إنهاء إذا
٪>