jQueryJSON 无刷新三级联动
<asp:DropDownList ID="ddl1" runat="server" Width="100px" ></asp:DropDownList> <asp:DropDownList ID="ddl2" runat="server" Width="100px" ></asp:DropDownList>
<asp:DropDownList ID="ddl3" runat="server" Width="100px" ></asp:DropDownList>
js:
<script src="js/jquery-1.4.2.min.js" type="text/javascript" ></script> <script type="text/javascript"> $(document).ready(function () { GetA(); $("#ddl1").change(function () { GetB(); }); $("#ddl2").change(function () { GetC(); }); }); function GetA() { $("#ddl1").html(""); $("#ddl1").append("<option value='-1' selected='selected'>请选择...</option>"); //$("select[name$=ddl1] > option:selected").remove(); var strId = 0; $.getJSON("LoadClass.ashx?ddlId=" + strId, function (data) { for (var i = 0; i < data.length; i++) { $("select[name$=ddl1]").append($("<option></option>").val(data[i].ID).html(data[i].Cname)); }; GetB(); }); } function GetB() { $("#ddl2").html(""); $("#ddl3").html(""); var strId = $("#ddl1").attr("value"); if (strId != 0) { $.getJSON("LoadClass.ashx?ddlId=" + strId, function (data) { for (var i = 0; i < data.length; i++) { $("select[name$=ddl2]").append($("<option></option>").val(data[i].ID).html(data[i].Cname)); }; GetC(); }); } } function GetC() { $("#ddl3").html(""); var strId = $("#ddl2").attr("value"); if (strId != 0) { $.getJSON("LoadClass.ashx?ddlId=" + strId, function (data) { for (var i = 0; i < data.length; i++) { $("select[name$=ddl3]").append($("<option></option>").val(data[i].ID).html(data[i].Cname)); }; }); } } </script>
LoadClass.ashx:
<%@ WebHandler Language="C#" Class="LoadClass" %> using System; using System.Web; using System.Text; using System.Data; public class LoadClass : IHttpHandler { public void ProcessRequest (HttpContext context) { // 数组 [{"ID":"275","Cname":"A1"},{"ID":"319","Cname":"A2"},{"ID":"322","Cname":"A3"}] int strId = Convert.ToInt32(context.Request["ddlId"]); string strSQL = "select * from Class where parent_Ptr=" + strId + " order by classOrder asc "; db d = new db(); DataTable dt = d.getDT(strSQL); StringBuilder strClass = new StringBuilder(); if (dt != null) { strClass.Append("["); for (int i = 0; i < dt.Rows.Count; i++) { strClass.Append("{"); strClass.Append("\"ID\":\"" + dt.Rows[i]["id"].ToString() + "\","); strClass.Append("\"Cname\":\"" + dt.Rows[i]["classCname"].ToString() + "\""); if (i != dt.Rows.Count - 1) { strClass.Append("},"); } } } strClass.Append("}"); strClass.Append("]"); context.Response.ContentType = "application/json"; context.Response.ContentEncoding = Encoding.UTF8; context.Response.Write(strClass.ToString()); context.Response.End(); } public bool IsReusable { get { return false; } } }
注意:
//后台只能获取value值,不能直接获取text,需要通过js、控件中转 //结果:275 276 277 Label1.Text = Request.Form[ddl1.UniqueID] + " "
+ Request.Form["ddl2"] + " "
+ Request.Form[ddl3.ClientID.Replace("_", "$")] ;
遇到的问题:
下拉框text的值通过HiddenField控件中转
<asp:HiddenField ID="HiddenField1" runat="server" /> <asp:HiddenField ID="HiddenField2" runat="server" /> <asp:HiddenField ID="HiddenField3" runat="server" />
把选中下拉框的值赋予隐藏控件中:
<script type="text/javascript"> var Key1 = $("#ddl1>option:selected").val(); $('#HiddenField1').val(Key1); var Key2 = $("#ddl2>option:selected").val(); $('#HiddenField2').val(Key2); var Key3 = $("#ddl3>option:selected").val(); $('#HiddenField3').val(Key3); </script>
选择下拉框后 动态赋值到HiddenField 控件中的值 无法与下拉框选中的值相对应!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· SQL Server 2025 AI相关能力初探
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库