jQuery JSON实现无刷新三级联动实例探讨
jQuery JSON实现无刷新三级联动实例探讨
发布时间:2016-12-30 来源:查字典编辑
摘要:复制代码代码如下:js:复制代码代码如下:$(document).ready(function(){GetA();$("#ddl1").ch...

复制代码 代码如下:

<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#" %>

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 控件中的值 无法与下拉框选中的值相对应!

可能与初始化有关,赋值这段代码应该放到什么地方呢?或者有什么好的方法,欢迎讨论?

推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
相关阅读
网友关注
最新Javascript教程学习
热门Javascript教程学习
编程开发子分类