jQuery AJAX下拉框表单的实现例子

AJAX下拉框表单是在表单中绑定了改变事件了,当A改变时B的列表根据A条件进行查询返回并显示数据了,具体例子如下。

最近在开发一个小东西的时候出现这么一个需求,根据 AJAX 请求的数据生成下拉框表单。
 
这个需求经常会出现,比如全球范围内地址的选择,全球所有国家的省份和城市是一堆不小的数据,而且表单还不一定会被使用。这时可以考虑先加载一个空表单,在用户点击的时候再用 AJAX 把数据加载进来;或者先加载所有国家的列表,然后根据用户选择的国家再加载对应的省份和城市数据。
 
再比如一些必须使用 AJAX 加载下拉框表单的地方。像 CDK 兑换,需要用户填写 CDK 之后再根据 CDK 适用的范围生成下拉框表单。
 
实现这个功能是比较简单的,但是我们要说的是如何更加高效的实现这个功能。
 
HTML 表单
 
在 AJAX 获取并生成数据之前,首先需要一个空的或者存在内容的 HTML 下拉框表单用来填充数据:
 

<select id="dropdown">
  <option value="">请选择...</option>
 </select>
 
AJAX 获取数据
 
接下来我们可以开始使用 AJAX 获取数据了,在使用 jQuery 的情况下,AJAX 获取数据非常简单方便。
 
获取数据的时机可以是在用户点击表单的时候、用户设置其它表单的内容的时候或者其它时候。
 

$.ajax( {
  type: 'GET',
  url: AJAXurl,
  dataType: 'json',
  success: function( data ){
   build_dropdown( data, $( '#dropdown' ), '请选择...' );//填充表单
  }
 } );
 
使用 AJAX 请求 AJAXurl 的地址之后将返回一个 JSON 对象,接下来我们需要解析这些数据,把他填充到下拉框表单里,这里使用了自定义方法 build_dropdown()。
 
填充表单
 
在上边用 ajax((www.111cn.net)) 方法获取到数据之后,使用 build_dropdown() 方法填充了表单数据,这里我们就来创建这个方法:
 

//填充表单
 var build_dropdown = function( data, element, defaultText ){
  element.empty().append( '<option value="">' + defaultText + '</option>' );
  if( data ){
   $.each( data, function( key, value ){
    element.append( '<option value="' + key + '">' + value + '</option>' );
   } );
  }
 }
 
这个方法用三个参数,分别是表单数据(JSON 对象)、需要被填充数据的表单和默认空选项的文本。
 
到这里就可以完成一个 AJAX 获取数据并生成下拉框表单的过程了。
 
数据格式
 
AJAX 获取的表单数据为 JSON 对象,格式类似于:
 

{
  'USA'    : '美国',
 'China'  : '中国',
 'Japan'  : 'www.111cn.net',
 'Germany': '德国',
 'Britain': '英国',
 'France' : '法国',
 'Korea'  : '韩国'
 }
 
可以使用 PHP 的 json_encode() 函数,把 PHP 数据变成我们需要的 JSON 对象数据:
 

echo json_encode( array(
  'USA'     => '美国',
  'China'   => '中国',
  'Japan'   => 'www.111cn.net',
  'Germany' => '德国',
  'Britain' => '英国',
  'France'  => '法国',
  'Korea'   => '韩国'
 ) );

时间: 2024-09-19 15:59:10

jQuery AJAX下拉框表单的实现例子的相关文章

jQuery 建立 AJAX 下拉框表单的例子

最近在开发一个小东西的时候出现这么一个需求,根据 AJAX 请求的数据生成下拉框表单. 这个需求经常会出现,比如全球范围内地址的选择,全球所有国家的省份和城市是一堆不小的数据,而且表单还不一定会被使用.这时可以考虑先加载一个空表单,在用户点击的时候再用 AJAX 把数据加载进来:或者先加载所有国家的列表,然后根据用户选择的国家再加载对应的省份和城市数据. 再比如一些必须使用 AJAX 加载下拉框表单的地方.像 CDK 兑换,需要用户填写 CDK 之后再根据 CDK 适用的范围生成下拉框表单. 实

可输入文字查找ajax下拉框控件 ComBox的实现方法_jquery

GooFunc.js文件 //获取一个DIV的绝对坐标的功能函数,即使是非绝对定位,一样能获取到 function getElCoordinate(dom) { var t = dom.offsetTop; var l = dom.offsetLeft; dom=dom.offsetParent; while (dom) { t += dom.offsetTop; l += dom.offsetLeft; dom=dom.offsetParent; }; return { top: t, lef

一款基于jquery联动下拉框效果

 代码如下 复制代码 /* * 级联下拉框Jqueyr插件,V1.2 * Copyright 2011, Leo.Liu * 本插件包括2个无刷新级联下拉框插件: * 插件一:cascadeDropDownData是在不与服务器进行AJAX交互情况使用,需预先将所有下拉框数据全部读出.demo: * 方法一:var dataItem = [['全部', '-1', '0'], ['a001', 'a001', '0'], ['a002', 'a002', '0'], ['a003', 'a003

jQuery Select下拉框操作小结(推荐)_jquery

jQuery获取Select元素,并选择的Text和Value: 1. $("#select_id").change(function(){//code...}); //为Select添加事件,当选择其中一项时触发 2. var checkText=$("#select_id").find("option:selected").text(); //获取Select选择的Text 3. var checkValue=$("#select_

jQuery+jsp下拉框联动获取本地数据的方法(附源码)_jquery

本文实例讲述了jQuery+jsp下拉框联动获取本地数据的方法.分享给大家供大家参考,具体如下: JQuery下拉框联动很好的体现了Ajax的按需取数据的要求,减小数据的交互量.(点击此处下载源代码) 下面的实例使用Json将服务器端的类或者对象转换为JSON格式,主要运用了6个jar包 commons-beanutils-1.7.0.jar commons-collections-3.2.jar commons-lang-2.3.jar commons-logging-1.0.4.jar ez

jquery 级联下拉框实例代码

  <!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="conten

jQuery对下拉框,单选框,多选框的操作

  这篇文章主要介绍了jQuery对下拉框,单选框,多选框的操作需要的朋友可以过来参考下,希望对大家有所帮助 下拉框: //得到下拉菜单的选中项的文本(注意中间有空格) var cc1 = $(".formc select[@name='country'] option[@selected]").text(); //得到下拉菜单的选中项的值 var cc2 = $('.formc select[@name="country"]').val(); //得到下拉菜单的选

利用jquery实现下拉框的禁用与启用_jquery

话不多说,附上实例代码,仅供大家参考 禁用下拉框 //下拉框禁用 $("select").each(function () { $("#" + this.id).attr("disabled", true); }); 启用下拉框 //下拉框启用 $("select").each(function () { $("#" + this.id).removeAttr("disabled");

jQuery 自定义下拉框(DropDown)附源码下载_jquery

先给大家展示下效果图,喜欢的朋友可以下载源码哦 效果演示   源码下载 <section class="main"> <div class="wrapper-demo"> <div id="dd" class="wrapper-dropdown-1" tabindex="1"> <span>手册网</span> <ul class="