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中的函数
Jan 22 Javascript
JavaScript模拟可展开、拖动与关闭的聊天窗口实例
May 12 Javascript
javascript删除元素节点removeChild()用法实例
May 26 Javascript
浅谈setTimeout 与 setInterval
Jun 23 Javascript
JS获取当前脚本文件的绝对路径
Mar 02 Javascript
利用JQuery写一个简单的异步分页插件
Mar 07 Javascript
javascript遍历json对象的key和任意js对象属性实例
Mar 09 Javascript
如何使用vuejs实现更好的Form validation?
Apr 07 Javascript
BootStrap表单时间选择器详解
May 09 Javascript
浅谈Node.js CVE-2017-14849 漏洞分析(详细步骤)
Nov 10 Javascript
Vue 拦截器对token过期处理方法
Jan 23 Javascript
Vue使用虚拟dom进行渲染view的方法
Dec 26 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
再Docker中架设完整的WordPress站点全攻略
2015/07/29 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
php+ajax+json 详解及实例代码
2016/12/12 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
PHP基于socket实现客户端和服务端通讯功能
2017/07/13 PHP
PHP工厂模式简单实现方法示例
2018/05/23 PHP
为你的 Laravel 验证器加上多验证场景的实现
2020/04/07 PHP
理解Javascript_12_执行模型浅析
2010/10/18 Javascript
jquery实现控制表格行高亮实例
2013/06/05 Javascript
Javascript获取CSS伪元素属性的实现代码
2014/09/28 Javascript
Javascript 数组排序详解
2014/10/22 Javascript
js获取页面引用的css样式表中的属性值方法(推荐)
2016/08/19 Javascript
基于jQuery实现的查看全文功能【实用】
2016/12/11 Javascript
jQuery电话号码验证实例
2017/01/05 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
js仿拉勾网首页穿墙广告效果
2017/03/08 Javascript
jQuery Validate插件ajax方式验证输入值的实例
2017/12/21 jQuery
在JavaScript中实现链式调用的实现
2019/12/24 Javascript
优化Vue中date format的性能详解
2020/01/13 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
Element-ui upload上传文件限制的解决方法
2021/01/22 Javascript
Python中关于字符串对象的一些基础知识
2015/04/08 Python
Python操作Excel之xlsx文件
2017/03/24 Python
使用python验证代理ip是否可用的实现方法
2018/07/25 Python
Python3中_(下划线)和__(双下划线)的用途和区别
2019/04/26 Python
用Python解数独的方法示例
2019/10/24 Python
如何使用scrapy中的ItemLoader提取数据
2020/09/30 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
珍惜水资源建议书
2014/03/12 职场文书
中央空调节能方案
2014/06/15 职场文书
毕业横幅标语
2014/10/08 职场文书
病人写给医生的感谢信
2015/01/23 职场文书
活动经费申请报告
2015/05/15 职场文书
用python修改excel表某一列内容的操作方法
2021/06/11 Python
Vue3.0 手写放大镜效果
2021/07/25 Vue.js
Windows server 2016服务器基本设置
2022/08/14 Servers