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 CSS修改学习第三章 修改样式表
Feb 19 Javascript
更换select下拉菜单背景样式的实现代码
Dec 20 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
JS在IE下缺少标识符的错误
Jul 23 Javascript
node.js中实现同步操作的3种实现方法
Dec 05 Javascript
jQuery+AJAX实现网页无刷新上传
Feb 22 Javascript
微信小程序 图片宽度自适应的实现
Apr 06 Javascript
AngularJS ionic手势事件的使用总结
Aug 09 Javascript
使用JQ完成表格隔行换色的简单实例
Aug 25 Javascript
angular6开发steps步骤条组件
Jul 04 Javascript
vscode 使用Prettier插件格式化配置使用代码详解
Aug 10 Javascript
详解Vue的异步更新实现原理
Dec 22 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
Zend framework处理一个http请求的流程分析
2010/02/08 PHP
使ecshop模板中可引用常量的实现方法
2011/06/02 PHP
PHP去掉json字符串中的反斜杠\及去掉双引号前的反斜杠
2015/09/30 PHP
php实现Session存储到Redis
2015/11/11 PHP
PHP用mysql_insert_id()函数获得刚插入数据或当前发布文章的ID
2016/11/25 PHP
thinkPHP5.0框架配置格式、加载解析与读取方法
2017/03/17 PHP
Yii2表单事件之Ajax提交实现方法
2017/05/04 PHP
动态加载js的几种方法
2006/10/23 Javascript
Javascript 遮罩层和加载效果代码
2013/08/01 Javascript
jquery mobile事件多次绑定示例代码
2013/09/13 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
JS模拟Dialog弹出浮动框效果代码
2015/10/16 Javascript
js+canvas绘制矩形的方法
2016/01/28 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
jQuery UI Bootstrap是什么?
2016/06/17 Javascript
JS判断是否为JSON对象及是否存在某字段的方法(推荐)
2016/11/29 Javascript
原生JS下拉加载插件分享
2016/12/26 Javascript
vue分类筛选filter方法简单实例
2017/03/30 Javascript
vue + webpack如何绕过QQ音乐接口对host的验证详解
2018/07/01 Javascript
vue实现简单的MVVM框架
2018/08/05 Javascript
详解javascript appendChild()的完整功能
2018/08/18 Javascript
JavaScript事件发布/订阅模式原理与用法分析
2018/08/21 Javascript
Python实现base64编码的图片保存到本地功能示例
2018/06/22 Python
python类的实例化问题解决
2019/08/31 Python
Tensorflow 实现释放内存
2020/02/03 Python
Python3连接Mysql8.0遇到的问题及处理步骤
2020/02/17 Python
解决pycharm每次打开项目都需要配置解释器和安装库问题
2020/02/26 Python
python输出结果刷新及进度条的实现操作
2020/07/13 Python
python爬虫判断招聘信息是否存在的实例代码
2020/11/20 Python
Omio意大利:全欧洲低价大巴、火车和航班搜索和比价
2017/12/02 全球购物
印尼在线购买隐形眼镜网站:Lensza.co.id
2019/04/27 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
活动总结新闻稿
2014/08/30 职场文书
光棍节联谊晚会活动策划书
2014/10/10 职场文书
公务员检讨书
2014/11/01 职场文书
Python机器学习之基础概述
2021/05/19 Python