Ajax制作的下拉列表三级联动

HTML部分:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <script src="js/jquery-1.7.2.min.js"></script>
    <title></title>
    <style>
        select {
            width: 100px;
        }
    </style>
</head>
<body>
    <!--三个下拉列表-->
    <select id="sel1"></select>
    <select id="sel2"></select>
    <select id="sel3"></select>

    <script type="text/javascript">
        //加载时调用第一个列表加载数据的方法
        ChinaAjax('0001', '1');

        //列表1的选项改变事件
        $("#sel1").change(function () {
            ChinaAjax($("#sel1 option:selected").val(), '2');
        });

        //列表2的选项改变事件
        $("#sel2").change(function () {
            ChinaAjax($("#sel2 option:selected").val(), '3');
        });

        //通用ajax方法,参数1,parentcode,参数2,需要将数据添加到哪个列表
        function ChinaAjax(Pcode, se) {
            $.ajax({
                url: "China.ashx",
                data: { "ParentCode": Pcode },
                typt: "post",
                dataType: "json",
                success: function (data) {
                    //刷新列表1
                    if (se == '1') {
                        $("#sel1").empty();
                        for (i in data) {
                            $("#sel1").get(0).options.add(new Option(data[i].name, data[i].code));
                        }
                        //会在列表1添加完毕后自动刷新列表2,同时列表2添加完毕后会自动刷新列表3
                        ChinaAjax($("#sel1 option:selected").val(), '2');
                    }
                    //刷新列表2
                    if (se == '2') {
                        $("#sel2").empty();
                        for (i in data) {
                            $("#sel2").get(0).options.add(new Option(data[i].name, data[i].code));
                        }
                        //会在列表2添加完毕后自动刷新列表3
                        ChinaAjax($("#sel2 option:selected").val(), '3');
                    }
                    //刷新列表3
                    if (se == '3') {
                        $("#sel3").empty();
                        for (i in data) {
                            $("#sel3").get(0).options.add(new Option(data[i].name, data[i].code));
                        }
                    }
                },
            });//sel1.ajax
        };
    </script>
</body>
</html>

服务端处理程序部分:

<%@ WebHandler Language="C#" Class="China" %>

using System;
using System.Web;
using System.Collections.Generic;

public class China : IHttpHandler
{

    public void ProcessRequest(HttpContext context)
    {
        string json = "[";
        int count = 0;
        var Pcode = context.Request["ParentCode"];
        List<ChinaStates> query = new ChinaData().Select(Pcode);

        foreach (var data in query)
        {
            if (count <= 0)
            {
                json += "{\"name\":\"" + data.AreaName + "\",\"code\":\"" + data.AreaCode + "\"}";
            }
            else
            {
                json += ",{\"name\":\"" + data.AreaName + "\",\"code\":\"" + data.AreaCode + "\"}";
            }
            count++;
        }
        json += "]";
        context.Response.Write(json);
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}




  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值