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中的私有成员
Sep 18 Javascript
Jquery插件之多图片异步上传
Oct 20 Javascript
javascript实现页面内关键词高亮显示代码
Apr 03 Javascript
JavaScript正则表达式之multiline属性的应用
Jun 16 Javascript
js实现类似菜单风格的TAB选项卡效果代码
Aug 28 Javascript
jQuery实现返回顶部功能
Feb 23 Javascript
vue.js学习笔记:如何加载本地json文件
Jan 17 Javascript
Vue.js 2.0学习教程之从基础到组件详解
Apr 24 Javascript
js单页hash路由原理与应用实战详解
Aug 14 Javascript
JavaScript实现五子棋游戏的方法详解
Jul 08 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 jQuery
vue-cli4.5.x快速搭建项目
May 30 Vue.js
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开发中的页面跳转方法总结
2015/04/26 PHP
Ubuntu上安装yaf扩展的方法
2018/01/29 PHP
extjs 学习笔记 四 带分页的grid
2009/10/20 Javascript
JavaScript 浏览器验证代码(来自discuz)
2010/07/17 Javascript
实用框架(iframe)操作代码
2014/10/23 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
微信小程序如何获知用户运行小程序的场景教程
2017/05/17 Javascript
详解EasyUi控件中的Datagrid
2017/08/23 Javascript
JavaScript伪数组用法实例分析
2017/12/22 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
element form 校验数组每一项实例代码
2019/10/10 Javascript
在vue-cli中引入lodash.js并使用详解
2019/11/13 Javascript
vue中的循环对象属性和属性值用法
2020/09/04 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
vue项目实现减少app.js和vender.js的体积操作
2020/11/12 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
对Python3.6 IDLE常用快捷键介绍
2018/07/16 Python
Python设计模式之抽象工厂模式原理与用法详解
2019/01/15 Python
基于python实现的百度新歌榜、热歌榜下载器(附代码)
2019/08/05 Python
Django中的cookie和session
2019/08/27 Python
Python socket聊天脚本代码实例
2020/01/02 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
python3注册全局热键的实现
2020/03/22 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
巴西本土电商平台:Americanas
2020/06/21 全球购物
C语言如何决定使用那种整数类型
2016/11/26 面试题
新闻系毕业生推荐信
2013/11/16 职场文书
给物业的表扬信
2014/01/21 职场文书
优秀管理者获奖感言
2014/02/17 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
2019各种承诺书范文
2019/06/24 职场文书
公文写作指导之倡议书!
2019/07/03 职场文书
用React Native制作一个简单的游戏引擎
2021/05/27 Javascript