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 相关文章推荐
Apply an AutoFormat to an Excel Spreadsheet
Jun 12 Javascript
图片轮换效果实现代码(点击按钮停止执行)
Apr 12 Javascript
js二级地域选择的实现方法
Jun 17 Javascript
返回页面顶部top按钮通过锚点实现(自写)
Aug 30 Javascript
JS定时检测任务任务完成后执行下一步的解决办法
Dec 22 Javascript
angularjs 实现带查找筛选功能的select下拉框实例
Jan 11 Javascript
Vue2单一事件管理组件通信
May 09 Javascript
基于vue 实现token验证的实例代码
Dec 14 Javascript
使用D3.js构建实时图形的示例代码
Aug 28 Javascript
react 原生实现头像滚动播放的示例
Apr 21 Javascript
解决Vue keep-alive 调用 $destory() 页面不再被缓存的情况
Oct 30 Javascript
详解ES6 中的Object.assign()的用法实例代码
Jan 11 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
一个简单安全的PHP验证码类、PHP验证码
2016/09/24 PHP
JavaScript中使用正则匹配多条,且获取每条中的分组数据
2010/11/30 Javascript
javascript中String类的subString()方法和slice()方法
2011/05/24 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
关于include标签导致js路径找不到的问题分析及解决
2013/07/09 Javascript
8个超实用的jQuery功能代码分享
2015/01/08 Javascript
node.js require() 源码解读
2015/12/13 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
手把手搭建安装基于windows的Vue.js运行环境
2017/06/12 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
JS判断用户用的哪个浏览器实例详解
2018/10/09 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
Vue Extends 扩展选项用法完整实例
2019/09/17 Javascript
vue绑定class的三种方法
2020/12/24 Vue.js
[01:39:42]Fnatic vs Mineski 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
python数据结构链表之单向链表(实例讲解)
2017/07/25 Python
python编写暴力破解zip文档程序的实例讲解
2018/04/24 Python
Django学习教程之静态文件的调用详解
2018/05/08 Python
Django 创建新App及其常用命令的实现方法
2019/08/04 Python
Python matplotlib画图时图例说明(legend)放到图像外侧详解
2020/05/16 Python
CSS3中currentColor关键字的妙用
2016/02/27 HTML / CSS
CSS3实现多样的边框效果
2018/05/04 HTML / CSS
美国最大的农村生活方式零售店:Tractor Supply Company(TSC)
2017/05/15 全球购物
美国温暖商店:The Warming Store
2018/12/15 全球购物
数百万免费的图形资源:Freepik
2020/09/21 全球购物
C#如何调用Word并打开一个Word文档
2013/05/08 面试题
护理学毕业生自荐信
2013/10/02 职场文书
公司培训心得体会
2014/01/03 职场文书
网络编辑岗位职责
2014/03/18 职场文书
专科生就业求职信
2014/06/22 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
焦裕禄观后感
2015/06/03 职场文书
教师考核鉴定意见
2015/06/05 职场文书
python四个坐标点对图片区域最小外接矩形进行裁剪
2021/06/04 Python
SpringBoot SpringEL表达式的使用
2021/07/25 Java/Android