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 相关文章推荐
显示、隐藏密码
Jul 01 Javascript
jQuery live
May 15 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 Javascript
浅谈Node.js中的定时器
Jun 18 Javascript
javascript实现tab切换特效
Nov 12 Javascript
ES6通过babel转码使用webpack使用import关键字
Dec 13 Javascript
Angular2里获取(input file)上传文件的内容的方法
Sep 05 Javascript
JS+jQuery实现注册信息的验证功能
Sep 26 jQuery
vuex实现登录状态的存储,未登录状态不允许浏览的方法
Mar 09 Javascript
Vue 引入AMap高德地图的实现代码
Apr 29 Javascript
原生javascript如何实现共享onload事件
Jul 03 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 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中3种方法统计字符串中每种字符的个数并排序
2012/08/27 PHP
PHP安装threads多线程扩展基础教程
2015/11/17 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
PHP串行化与反串行化实例分析
2016/12/27 PHP
PHP操作MongoDB实现增删改查功能【附php7操作MongoDB方法】
2018/04/24 PHP
jquery.ui.progressbar 中文文档
2009/11/26 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
js弹窗返回值详解(window.open方式)
2014/01/11 Javascript
jQuery操作select下拉框的text值和value值的方法
2014/05/31 Javascript
JavaScript事件委托实例分析
2015/05/26 Javascript
学习JavaScript设计模式之观察者模式
2020/04/22 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
利用JavaScript实现栈的数据结构示例代码
2017/08/02 Javascript
p5.js入门教程之键盘交互
2018/03/19 Javascript
es6基础学习之解构赋值
2018/12/10 Javascript
vue-cli中vue本地实现跨域调试接口
2019/01/16 Javascript
解决layui laydate 时间控件一闪而过的问题
2019/09/28 Javascript
js实现百度登录窗口拖拽效果
2020/03/19 Javascript
从Node.js事件触发器到Vue自定义事件的深入讲解
2020/06/26 Javascript
[08:44]和酒神一起战斗 DOTA2教你做大人
2014/03/27 DOTA
Python基础之函数用法实例详解
2014/09/10 Python
Pycharm使用远程linux服务器conda/python环境在本地运行的方法(图解))
2019/12/09 Python
Fairyseason:为个人和批发商提供女装和配件
2017/03/01 全球购物
Spartoo瑞典:鞋子、包包和衣服
2018/09/15 全球购物
JD Sports西班牙:英国领先的运动服装公司
2020/01/06 全球购物
大学同学十年聚会感言
2014/02/21 职场文书
亲子活动总结
2014/04/26 职场文书
领导干部作风整顿个人剖析材料
2014/10/11 职场文书
四风问题党员个人整改措施
2014/10/27 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
会计出纳岗位职责
2015/03/31 职场文书
给朋友的道歉短信
2015/05/12 职场文书
2015教师个人年度工作总结
2015/10/23 职场文书
html+css实现滚动到元素位置显示加载动画效果
2021/08/02 HTML / CSS
python单向链表实例详解
2022/05/25 Python