ajax实现动态下拉框示例


Posted in Javascript onJanuary 10, 2017

许多页面上都涉及有下拉框,即select标签。对于简单的下拉框,被选择的数据是不需要改变的,我们可以用<option></option>写死。这样下拉框的数据永远都是那几条。

示例:

<select>
   <option>信息一</option>
   <option>信息二</option>
   <option>信息三</option>
   <option>信息四</option>
 </select>

但是有些项目或者工程是需要将数据库中的数据呈现出来并提供选择的,下拉的内容会随数据库中数据的变化而变化。首先我们有asp组件可以帮我们做这这件事情,DropDownList组件,只需要将数据库中查询得到的数据添加进该组件中,在前台即可以显示出动态下拉的效果。如果想更有新意,不依赖于传统组件,ajax就是个不错的选择。下面一步步来通过ajax实现动态下拉的效果。

1.js发出ajax请求:

$(document).ready(function () {
  $.ajax({
    timeout: 3000,
    async: false,
    type: "POST",
    url: "WareHouse.ashx",
    dataType: "json",
    data: {
      warehouse: $("#issued_sub_key_c").val(),
    },
    success: function (data) {
      for (var i = 0; i < data.length; i++) {
        $("#issued_sub_key_c").append("<option>" + data[i].Name + "</option>");
      }
    }
  });
});

ajax请求WareHouse.ashx(一般处理程序)来获得数据,请求成功后将返回的json数据附加到id为issued_sub_key_c的select标签。值得注意的是这里将async的属性改为了false,async的默认状态为true,即为异步。值改为false就是同步了。但是当async为false的时候,ajax请求完数据之前,浏览器一直处于锁死状态,这样会让使用者认为程序崩溃了,所以就人为的添加了一个超时(timeout),这样就不会出现程序崩溃的假象。回到话题开始,为什么要将async改为false呢?原因就是当ajax是异步请求的时候进入到页面后出现下拉框数据还未同步,下拉框是空白数据(可以自己体验体验)。所以我们需要利用同步的特性并配合超时来完成下拉框的数据同步。

2.一般处理程序:从数据库返回的数据是List<string>类型,我们需要自己定义一个toJson()方法将list转化为json数据,然后返回json数据。

public string toJson(List<string> str)
    {
      StringBuilder json = new StringBuilder();

      if (str == null)
      {
        return "null";

      }

      json.Append("[");
      foreach (var item in str)
      {
        json.Append("{\"Name\":\"");
        json.Append(item);
        json.Append("\"},");
      }

      return json.ToString().Substring(0, json.ToString().LastIndexOf(",")) + "]";
    }


    /*得到并关联仓库(select标签)*/

    public void ProcessRequest(HttpContext context)
    {

      SubinventoryDC subinventorydc = new SubinventoryDC();

      List<string> list = new List<string>();

      list = subinventorydc.getAllSubinventory();

      string json = toJson(list);

      context.Response.ContentType = "text/plain";

      context.Response.Write(json);
    }

3.前台页面:前台只需要定义一个id为issued_sub_key_c的select标签。注意select标签须得有一个name,后台正是通过name来取得选中数据的值。取值方法:Request.Form["issued_sub_key_c"]。

<select id="issued_sub_key_c" name="issued_sub_key_c">
 </select>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 复制数组实现代码
Nov 26 Javascript
经典海量jQuery插件 大家可以收藏一下
Feb 07 Javascript
JQuery select标签操作代码段
May 16 Javascript
用apply让javascript函数仅执行一次的代码
Jun 27 Javascript
jquery得到iframe src属性值的方法
Sep 25 Javascript
原生javascript实现图片弹窗交互效果
Jan 12 Javascript
jQuery实现的经典竖向伸缩菜单效果代码
Sep 24 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
Feb 17 Javascript
很棒的js选项卡切换效果
Jul 15 Javascript
修改Jquery Dialog 位置的实现方法
Aug 26 Javascript
JS正则表达式验证密码格式的集中情况总结
Feb 23 Javascript
jQuery实现文件编码成base64并通过AJAX上传的方法
Apr 12 jQuery
JavaScript三种绑定事件方式及相互之间的区别分析
Jan 10 #Javascript
详解使用Vue.Js结合Jquery Ajax加载数据的两种方式
Jan 10 #Javascript
JavaScript获取键盘按键的键码(参照表)
Jan 10 #Javascript
详解vue之页面缓存问题(基于2.0)
Jan 10 #Javascript
jQuery验证表单格式的使用方法
Jan 10 #Javascript
Html5 js实现手风琴效果
Apr 17 #Javascript
jquery做个日期选择适用于手机端示例
Jan 10 #Javascript
You might like
星际流派综述
2020/03/04 星际争霸
php抓即时股票信息
2006/10/09 PHP
php array_flip() 删除数组重复元素
2009/01/14 PHP
让ThinkPHP支持大小写url地址访问的方法
2014/10/31 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
laravel框架中控制器的创建和使用方法分析
2019/11/23 PHP
北京奥运官方网站幻灯切换效果flash版打包下载
2008/01/30 Javascript
js或css文件后面跟参数的原因说明
2010/01/09 Javascript
IE的fireEvent方法概述及应用
2013/02/22 Javascript
nodejs分页类代码分享
2014/06/17 NodeJs
JavaScript实现的in_array函数
2014/08/27 Javascript
分享jQuery插件的学习笔记
2016/01/14 Javascript
JavaScript实现清空(重置)文件类型INPUT元素值的方法
2016/11/17 Javascript
JavaScript操作文件_动力节点Java学院整理
2017/06/30 Javascript
vue源码解析之事件机制原理
2018/04/21 Javascript
Vue.js 实现微信公众号菜单编辑器功能(二)
2018/05/08 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
[04:12]第二届DOTA2亚洲邀请赛选手传记-Newbee.Sccc
2017/04/03 DOTA
Django中使用group_by的方法
2015/05/26 Python
Python解决八皇后问题示例
2018/04/22 Python
python使用adbapi实现MySQL数据库的异步存储
2019/03/19 Python
python实现海螺图片的方法示例
2019/05/12 Python
Python 正则表达式 re.match/re.search/re.sub的使用解析
2019/07/22 Python
Python面向对象之私有属性和私有方法应用案例分析
2019/12/31 Python
python文件路径操作方法总结
2020/12/21 Python
俄罗斯苹果优质经销商商店:iPort
2020/05/27 全球购物
《纸船和风筝》教学反思
2014/02/15 职场文书
毕业生就业协议书
2014/04/11 职场文书
数据保密承诺书
2014/06/03 职场文书
民事答辩状范本
2015/05/21 职场文书
幸福终点站观后感
2015/06/04 职场文书
公司保密管理制度
2015/08/04 职场文书
CSS3 菱形拼图实现只旋转div 背景图片不旋转功能
2021/03/30 HTML / CSS
MySQL 8.0 Online DDL快速加列的相关总结
2021/06/02 MySQL
Python中的嵌套循环详情
2022/03/23 Python
Vue3实现简易音乐播放器组件
2022/08/14 Vue.js