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 相关文章推荐
基于jQuery实现的Ajax 验证用户名是否存在的实现代码
Apr 06 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
javascript引擎长时间独占线程造成卡顿的解决方案
Dec 03 Javascript
JS实现为表格动态添加标题的方法
Mar 31 Javascript
JS实现的页面自定义滚动条效果
Oct 26 Javascript
JavaScript的React框架中的JSX语法学习入门教程
Mar 05 Javascript
详解Node.js模块间共享数据库连接的方法
May 24 Javascript
浅析JS获取url中的参数实例代码
Jun 14 Javascript
分享JavaScript监听全部Ajax请求事件的方法
Aug 28 Javascript
详解Vue微信公众号开发踩坑全记录
Aug 21 Javascript
jQuery事件对象的属性和方法详解
Sep 09 jQuery
通过JS判断网页是否为手机打开
Oct 28 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自动判断字符集并转码的详解
2013/06/26 PHP
php警告Creating default object from empty value 问题的解决方法
2014/04/02 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
javascript游戏开发之《三国志曹操传》零部件开发(四)用地图块拼成大地图
2013/01/23 Javascript
通过JQuery将DIV的滚动条滚动到指定的位置方便自动定位
2014/05/05 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
jQuery实现form表单基于ajax无刷新提交方法详解
2015/12/08 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
JS实现的样式切换功能tableCSS实例
2016/12/30 Javascript
jquery ajaxfileupload异步上传插件使用详解
2017/02/08 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
Vue.js原理分析之observer模块详解
2017/02/17 Javascript
微信小程序 新建登录页并实现tabBar隐藏
2017/06/13 Javascript
代码详解JS操作剪贴板
2018/02/11 Javascript
详解开发react应用最好用的脚手架 create-react-app
2018/04/24 Javascript
webuploader实现上传图片到服务器功能
2018/08/16 Javascript
小程序实现多选框功能
2018/10/30 Javascript
详解如何模拟实现node中的Events模块(通俗易懂版)
2019/04/15 Javascript
小程序根据手机机型设置自定义底部导航距离
2019/06/04 Javascript
Jquery Datatables的使用详解
2020/01/30 jQuery
CentOS 6.5中安装Python 3.6.2的方法步骤
2017/12/03 Python
python Kmeans算法原理深入解析
2019/08/23 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
德国自然时尚和有机产品购物网站:Waschbär
2019/05/29 全球购物
Ariat英国官网:为世界顶级马术运动员制造最优质的鞋类和服装
2020/02/14 全球购物
新驾驶员个人自我评价
2014/01/03 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
孝敬父母的演讲稿
2014/05/14 职场文书
小学数学教学反思范文
2016/02/16 职场文书
Spark SQL 2.4.8 操作 Dataframe的两种方式
2021/10/16 SQL Server
业余无线电通联Q语
2022/02/18 无线电
《金肉人》米特&《航海王》阿鹤声优松岛实因胰脏癌去世 享寿81岁
2022/04/13 日漫