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 相关文章推荐
使用SyntaxHighlighter实现HTML高亮显示代码的方法
Feb 04 Javascript
自己写了一个展开和收起的多更能型的js效果
Mar 05 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
Apr 02 Javascript
jQuery实现简单的DIV拖动效果
Feb 19 Javascript
微信小程序 Video API实例详解
Oct 02 Javascript
JS实现简易刻度时钟示例代码
Mar 11 Javascript
彻底学会Angular.js中的transclusion
Mar 12 Javascript
JS简单获取当前日期和农历日期的方法
Apr 17 Javascript
jQuery扩展_动力节点Java学院整理
Jul 05 jQuery
vue axios 给生产环境和发布环境配置不同的接口地址(推荐)
May 08 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
Oct 18 Javascript
JQuery中的常用事件、对象属性与使用方法分析
Dec 23 jQuery
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
jq的get传参数在utf-8中乱码问题的解决php版
2008/07/23 PHP
PHP在引号前面添加反斜杠(PHP去除反斜杠)
2013/09/28 PHP
PHP常用的缓存技术汇总
2014/05/05 PHP
PHP把MSSQL数据导入到MYSQL的方法
2014/12/27 PHP
PHP中两个float(浮点数)比较实例分析
2015/09/27 PHP
php实现购物车功能(上)
2020/07/23 PHP
在 PHP 和 Laravel 中使用 Traits的方法
2019/11/13 PHP
客户端静态页面玩分页
2006/06/26 Javascript
Javascript typeof 用法
2008/12/28 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
jquery中animate的stop()方法作用实例分析
2015/01/30 Javascript
js实现可键盘控制的简单抽奖程序
2016/07/13 Javascript
Three.js学习之文字形状及自定义形状
2016/08/01 Javascript
利用node.js制作命令行工具方法教程(一)
2017/06/22 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
jQuery模拟12306城市选择框功能简单实现方法示例
2018/08/13 jQuery
Puppeteer 爬取动态生成的网页实战
2018/11/14 Javascript
小程序开发中如何使用async-await并封装公共异步请求的方法
2019/01/20 Javascript
详解一个基于react+webpack的多页面应用配置
2019/01/21 Javascript
uni-app如何页面传参数的几种方法总结
2020/04/28 Javascript
[38:30]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第一场2
2014/05/24 DOTA
Python处理文本文件中控制字符的方法
2017/02/07 Python
python实现将excel文件转化成CSV格式
2018/03/22 Python
python实现支付宝当面付(扫码支付)功能
2018/05/30 Python
python skimage 连通性区域检测方法
2018/06/21 Python
Python从Excel中读取日期一列的方法
2018/11/28 Python
基于Python的Post请求数据爬取的方法详解
2019/06/14 Python
python实现一个点绕另一个点旋转后的坐标
2019/12/04 Python
python实现吃苹果小游戏
2020/03/21 Python
Python进程的通信Queue、Pipe实例分析
2020/03/30 Python
python实现文字版扫雷
2020/04/24 Python
Kiehl’s科颜氏西班牙官方网站:源自美国的植物护肤品牌
2020/02/22 全球购物
C#中类(class)与结构(struct)的异同
2013/11/03 面试题
公司总经理岗位职责
2015/04/01 职场文书
无房证明样本
2015/06/17 职场文书
早恋主题班会
2015/08/14 职场文书