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检查日期格式的函数[比较全]
Oct 17 Javascript
来自国外的页面JavaScript文件优化
Dec 08 Javascript
JS截取url中问号后面参数的值信息
Apr 29 Javascript
Bootstrap Metronic完全响应式管理模板之菜单栏学习笔记
Jul 08 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
Sep 24 Javascript
微信小程序教程之本地图片上传(leancloud)实例详解
Nov 16 Javascript
12个非常有用的JavaScript技巧
May 17 Javascript
Vue组件之自定义事件的功能图解
Feb 01 Javascript
vue中rem的配置的方法示例
Aug 30 Javascript
jQuery实现获取及设置CSS样式操作详解
Sep 05 jQuery
详解Eslint 配置及规则说明
Sep 10 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
Jun 03 Javascript
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
杏林同学录(七)
2006/10/09 PHP
用ADODB来让PHP操作ACCESS数据库的方法
2006/12/31 PHP
Yii 框架入口脚本示例分析
2020/05/19 PHP
学习YUI.Ext基础第一天
2007/03/10 Javascript
一组JS创建和操作表格的函数集合
2009/05/07 Javascript
js上传图片及预览功能实例分析
2015/04/24 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
2016/09/17 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
详解vue-cli快速构建vue应用并实现webpack打包
2017/12/13 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
2018/11/21 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
微信小程序实现3D轮播图效果(非swiper组件)
2019/09/21 Javascript
node.js如何根据URL返回指定的图片详解
2020/10/21 Javascript
[01:04:01]2014 DOTA2华西杯精英邀请赛5 24 DK VS VG
2014/05/25 DOTA
在Python中使用异步Socket编程性能测试
2014/06/25 Python
Python语言的12个基础知识点小结
2014/07/10 Python
Python实现二分法算法实例
2015/02/02 Python
关于Python中异常(Exception)的汇总
2017/01/18 Python
浅析Python3爬虫登录模拟
2018/02/07 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
python使用tornado实现登录和登出
2018/07/28 Python
windows下python安装小白入门教程
2018/09/18 Python
使用python将excel数据导入数据库过程详解
2019/08/27 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
HTML5仿微信聊天界面、微信朋友圈实例代码
2018/01/29 HTML / CSS
main 函数执行以前,还会执行什么代码
2013/04/17 面试题
工商管理自荐书
2014/07/06 职场文书
推广普通话共筑中国梦演讲稿
2014/09/21 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
留学推荐信怎么写
2015/03/26 职场文书
商务司机岗位职责
2015/04/10 职场文书
金陵十三钗观后感
2015/06/04 职场文书
SQL SERVER中常用日期函数的具体使用
2021/04/08 SQL Server
详解Python常用的魔法方法
2021/06/03 Python