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 相关文章推荐
Expandable &quot;Detail&quot; Table Rows
Aug 29 Javascript
对setInterval在火狐和chrome切换标签产生奇怪的效果之探索,与解决方案!
Oct 29 Javascript
JS验证控制输入中英文字节长度(input、textarea等)具体实例
Jun 21 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
angularjs基础教程
Dec 25 Javascript
jQuery原理系列-常用Dom操作详解
Jun 07 Javascript
微信小程序 页面跳转如何实现传值
Apr 05 Javascript
基于jQuery实现瀑布流页面
Apr 11 jQuery
Angular 4.X开发实践中的踩坑小结
Jul 04 Javascript
关于ES6箭头函数中的this问题
Feb 27 Javascript
基于Express框架使用POST传递Form数据
Aug 10 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
ThinkPHP上使用多说评论插件的方法
2014/10/31 PHP
php+xml实现在线英文词典查询的方法
2015/01/23 PHP
PHP编程中的__clone()方法使用详解
2015/11/27 PHP
Zend Framework创建自己的动作助手详解
2016/03/05 PHP
可兼容php5与php7的cURL文件上传功能实例分析
2018/05/11 PHP
JS批量操作CSS属性详细解析
2013/12/16 Javascript
js格式化输入框内金额、银行卡号
2016/02/01 Javascript
微信小程序 框架详解及实例应用
2016/09/26 Javascript
简单实现js浮动框
2016/12/13 Javascript
jQuery、zepto、js常用小技巧
2017/02/12 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
JavaScript深拷贝和浅拷贝概念与用法实例分析
2018/06/07 Javascript
js遍历添加栏目类添加css 再点击其它删除css【推荐】
2018/06/12 Javascript
layui自定义插件citySelect实现省市区三级联动选择
2019/07/26 Javascript
Vue移动端实现图片上传及超过1M压缩上传
2019/12/23 Javascript
JS操作Fckeditor的一些常用方法(获取、插入等)
2020/02/19 Javascript
零基础学Python(一)Python环境安装
2014/08/20 Python
wxPython窗口的继承机制实例分析
2014/09/28 Python
Python中实现对Timestamp和Datetime及UTC时间之间的转换
2015/04/08 Python
详解Python中with语句的用法
2015/04/15 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
pandas 层次化索引的实现方法
2019/07/06 Python
Django Rest framework权限的详细用法
2019/07/25 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
Python 为什么推荐蛇形命名法原因浅析
2020/06/18 Python
Canvas制作的下雨动画的示例
2018/03/06 HTML / CSS
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
数据库的约束含义
2012/09/09 面试题
总经理司机职责
2014/02/02 职场文书
机关单位动员会主持词
2014/03/20 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
2015年店长工作总结范文
2015/04/08 职场文书
《平行四边形的面积》教学反思
2016/02/16 职场文书
通知怎么写?
2019/04/17 职场文书
Spring boot实现上传文件到本地服务器
2022/08/14 Java/Android