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 相关文章推荐
JS 显示当前日期与时间的代码
Mar 24 Javascript
Javascript闭包(Closure)详解
May 05 Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 Javascript
Bootstrap零基础入门教程(二)
Jul 18 Javascript
使用JS实现图片展示瀑布流效果的实例代码
Sep 12 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
Sep 21 Javascript
微信小程序 购物车简单实例
Oct 24 Javascript
Vue一次性简洁明了引入所有公共组件的方法
Nov 28 Javascript
iview tabs 顶部导航栏和模块切换栏的示例代码
Mar 04 Javascript
layui实现form表单同时提交数据和文件的代码
Oct 25 Javascript
使用zrender.js绘制体温单效果
Oct 31 Javascript
vue实现修改图片后实时更新
Nov 14 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
深入理解:XML与对象的序列化与反序列化
2013/06/08 PHP
PHP遍历某个目录下的所有文件和子文件夹的实现代码
2013/06/28 PHP
php curl抓取网页的介绍和推广及使用CURL抓取淘宝页面集成方法
2015/11/30 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
thinkPHP多语言切换设置方法详解
2016/11/11 PHP
使用PHP连接多种数据库的实现代码(mysql,access,sqlserver,Oracle)
2016/12/21 PHP
javascript 图片上传预览-兼容标准
2009/06/01 Javascript
javascript抽象工厂模式详细说明
2014/12/16 Javascript
详解AngularJS过滤器的使用
2016/03/11 Javascript
通过bootstrap全面学习less
2016/11/09 Javascript
JavaScript字符串检索字符的方法
2017/06/23 Javascript
JavaScript 获取元素在父节点中的下标(推荐)
2017/06/28 Javascript
ejsExcel模板在Vue.js项目中的实际运用
2018/01/27 Javascript
在Create React App中启用Sass和Less的方法示例
2019/01/16 Javascript
详解js中let与var声明变量的区别
2020/04/05 Javascript
JavaScrip如果基于url实现图片下载
2020/07/03 Javascript
浅谈实现在线预览PDF的几种解决办法
2020/08/10 Javascript
[02:37]2015国际邀请赛选手档案—LGD.Xiao8
2015/07/28 DOTA
[28:48]《真视界》- 2017年国际邀请赛
2017/09/27 DOTA
Python下载懒人图库JavaScript特效
2015/05/28 Python
Python常见异常分类与处理方法
2017/06/04 Python
python中hashlib模块用法示例
2017/10/30 Python
python实现log日志的示例代码
2018/04/28 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Python time库基本使用方法分析
2019/12/13 Python
关于Tensorflow分布式并行策略
2020/02/03 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
python文件路径操作方法总结
2020/12/21 Python
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
高三体育教学反思
2014/01/29 职场文书
公司离职证明样本
2014/09/13 职场文书
未婚证明格式
2015/06/15 职场文书
2015年高中班级工作总结
2015/07/21 职场文书
导游词之阆中古城
2019/12/23 职场文书
解决python存数据库速度太慢的问题
2021/04/23 Python
默认网关不可用修复后过一会又不好使了解决方法
2022/04/08 数码科技