• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    基于Ajax实现下拉框联动显示数据

    公司做项目的时候,需要用到下拉框联动显示数据的功能,索性利用Ajax来实现,看到时间比较充裕,就没去找demo自己去想方法写了。纯自己的想法,有些可能比较弱智,希望不要见笑。

    页面中的两个下拉列表框:

    tr>
            td style="width: 130px">
              所在学院:/td>
            td style="width: 100px">
              select id="college" style="width: 200px" runat="server" onchange="changcollege(this.value)">
                option value="0">
                  --请选择所在学院学院--
                /option>
              /select>/td>
          /tr>
          tr>
            td style="width: 130px">
              所在专业:/td>
            td style="width: 100px">
              select id="specialty" style="width: 200px" runat="server" onchange="SaveSpecical(this.value)">
                option value="0">
                  --请选择所在专业--
                /option>
              /select>/td>
          /tr>
    
    

    JS脚本代码:

    script type="text/javascript">
    var http_request = false;
    function send_request(method,url,content,responseType,callback)//定义发送请求的函数
    {
      http_request=false;
      if(window.XMLHttpRequest)
      {
        http_request=new XMLHttpRequest();
        if(http_request.overrideMimeType)
        {
          http_request.overrideMimeType("text/xml");
        }
      }
      else
      {
        try
        {
          http_request=new ActiveXObject("Msxml2.XMLHTTP");
        }
        catch(e)
        {
          try
          {
            http_request=new ActiveXObject("Microsoft.XMLHTTP");
          }
          catch(e)
          {}
        }
      }
      if(!http_request)
      {
        window.alert("创建XMLHttpRequest对象失败");
        return false;
      }
      if(responseType.toLowerCase()=="text")
      {
        http_request.onreadystatechange=callback;
      }
      else
      {
        window.alert("ERR");
        return false;
      }
      if(method.toLowerCase()=="get")
      {
        http_request.open(method,url,true);
      }
      else if(method.toLowerCase()=="post")
      {
        http_request.open(method,url,true);
        http_request.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
      }
      else
      {
        window.alert("Err");
        return false;
      }
      http_request.send(content);
    }
    function changcollege(va)//当学院下拉列表发生改变时触发的脚本事件
    {
      if(va!='0')
      {
        var speciality = document.getElementById("specialty");
        speciality.disabled=false;
        var url="Handler.ashx?type=collegeid="+va;
        send_request("GET",url,null,"text",populateClass3);
      }
    }
    function populateClass3()//Ajax执行成功的回调函数
    {
      var f=document.getElementById("specialty");
      if(http_request.readyState==4)
      {
          if(http_request.status==200)
          {
            var list=http_request.responseText;
            var classList=list.split("|");
            f.options.length=1;
            for(var i=0;iclassList.length;i++)
                //将取得的结果添加到下级的列表框中
            {
              var tmp=classList[i].split(",");
              f.add(new Option(tmp[1],tmp[0]));
            }
          }
          else
          {
            alert("您所请求的页面有异常。");
          }
      }
    }  
    /script>

    我们将http请求发送给服务端的Handler.ashx进行处理。

    public class Handler : IHttpHandler 
    {
      public void ProcessRequest(HttpContext context)
      {
        string type = context.Request.QueryString["type"];
        if (type.Equals("college"))
        {
          string id = context.Request.QueryString["id"];
          context.Response.ContentType = "text/plain";
          context.Response.Write(getSpecialty(id));//这个是从数据库中根据传来省的id 查询出来的。学院的名字和主键,主键以便去查专业的名字
        }
      }
      public string getSpecialty(string college)
      {
        DataSet ds = GetInformation.GetSpecialtyInfo(college);
        string str = "";
        for (int i = 0; i  ds.Tables[0].Rows.Count; i++)
        {
          if (i == ds.Tables[0].Rows.Count - 1)
          {
            str += ds.Tables[0].Rows[i]["SpecialtyID"].ToString() + "," + ds.Tables[0].Rows[i]["SpecialtyName"].ToString();
          }
          else
          {
            str += ds.Tables[0].Rows[i]["SpecialtyID"].ToString() + "," + ds.Tables[0].Rows[i]["SpecialtyName"].ToString() + "|";
          }
        }
        return str.Trim();
      }
      public bool IsReusable {
        get {
          return false;
        }
      }
    }

    根据学院的编号获得相应的专业,并将专业的名称用“|”分割组合成字符串返回给客户端,客户端脚本拆分字符串添加到下拉框中。

    这里只是二级的联动显示,三级联动数据的现实原理是一样的。

    本文的全部内容就到此结束了,希望大家学习Ajax实现下拉框联动显示数据有所帮助。

    您可能感兴趣的文章:
    • ajax三级联动下拉菜单效果
    • AJAX省市区三级联动下拉菜单(java版)
    • ThinkPHP使用心得分享-ThinkPHP + Ajax 实现2级联动下拉菜单
    • JavaScript Ajax Json实现上下级下拉框联动效果实例代码
    • AJAX解析XML实例之下拉框省、市二级联动
    • jquery ajax实现下拉框三级无刷新联动,且保存保持选中值状态
    • ajax读取数据库内容实现二级联动下拉选择菜单示例
    • Ajax实现无刷新三联动下拉框
    • Jquery+ajax+JAVA(servlet)实现下拉菜单异步取值
    • Ajax+Servlet实现无刷新下拉联动效果
    上一篇:Ajax带提示的验证表单实例
    下一篇:Jquery中ajax提交表单几种方法(get、post两种方法)
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    基于Ajax实现下拉框联动显示数据 基于,Ajax,实现,下拉,框,