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 05 Javascript
JavaScript 用cloneNode方法克隆节点的代码
Oct 15 Javascript
jquery 构造函数在表单提交过程中修改数据
May 25 Javascript
基于JavaScript实现移动端TAB触屏切换效果
Oct 20 Javascript
基于Angularjs+mybatis实现二级评论系统(仿简书)
Feb 13 Javascript
zTree树形菜单交互选项卡效果的实现方法
Dec 25 Javascript
php中and 和 &amp;&amp;出坑指南
Jul 13 Javascript
基于layui实现高级搜索(筛选)功能
Jul 26 Javascript
javascript合并两个数组最简单的实现方法
Sep 14 Javascript
layui(1.0.9)文件上传upload,前后端的实例代码
Sep 26 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 Javascript
node.js 如何监视文件变化
Sep 01 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操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
Yii框架登录流程分析
2014/12/03 PHP
PHP判断json格式是否正确的实现代码
2017/09/20 PHP
PHP如何搭建百度Ueditor富文本编辑器
2018/09/21 PHP
jQuery中live方法的重复绑定说明
2011/10/21 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
JS正则中的RegExp对象对象
2012/11/07 Javascript
jquery实现的网页自动播放声音
2014/04/30 Javascript
jquery中each遍历对象和数组示例
2014/08/05 Javascript
JQuery $.each遍历JavaScript数组对象实例
2014/09/01 Javascript
javascript带回调函数的异步脚本载入方法实例分析
2015/07/02 Javascript
jQuery中$(function() {});问题详解
2015/08/10 Javascript
JS模仿编辑器实时改变文本框宽度和高度大小的方法
2015/08/17 Javascript
简单实现JS上传图片预览功能
2017/04/14 Javascript
Vue.js中的computed工作原理
2018/03/22 Javascript
jquery操作checkbox的常用方法总结【附测试源码下载】
2019/06/10 jQuery
vue中使用百度脑图kityminder-core二次开发的实现
2019/09/26 Javascript
[01:08:10]2014 DOTA2国际邀请赛中国区预选赛 SPD-GAMING VS LGD-CDEC
2014/05/22 DOTA
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
在Python中调用ggplot的三种方法
2015/04/08 Python
利用Python如何生成随机密码
2016/04/20 Python
python3 常见解密加密算法实例分析【base64、MD5等】
2019/12/19 Python
Python插入Elasticsearch操作方法解析
2020/01/19 Python
Django 自定义权限管理系统详解(通过中间件认证)
2020/03/11 Python
python 实现逻辑回归
2020/12/30 Python
美国渔具店:FishUSA
2019/08/07 全球购物
Rentalcars.com中国:世界上最大的在线汽车租赁服务
2019/08/22 全球购物
如何在.net Winform里面显示PDF文档
2012/09/11 面试题
印刷工程专业应届生求职信
2013/09/29 职场文书
争先创优公开承诺书
2014/08/30 职场文书
工作作风建设心得体会
2014/10/22 职场文书
校长新学期寄语2016
2015/12/04 职场文书
2016年学校综治宣传月活动总结
2016/03/16 职场文书
正能量励志演讲稿三分钟(范文)
2019/07/11 职场文书
Python生成九宫格图片的示例代码
2021/04/14 Python
Docker安装MySql8并远程访问的实现
2022/07/07 Servers