ajax 下拉列表联动的用法。

ajax的定义:

AJAX 是一种用于创建快速动态网页的技术。

通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

ajax效果的一个例子:

区域为空的时候,维护人情况:

选了一个区域后的情况:(选 舒城县 联带出来的维护人员 小刘)

一、原生态的js实现

XMLHttpRequest 是 AJAX 的基础

XMLHttpRequest 对象

所有现代浏览器均支持 XMLHttpRequest 对象(IE5 和 IE6 使用 ActiveXObject)。

XMLHttpRequest 用于在后台与服务器交换数据。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。

  1. var xmlHttp;
  2. function createXMLHttpRequest(){
  3. if(window.ActiveXObject){//检查浏览器是否支持 XMLHttpRequest 对象
  4. xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//不支持 创建
  5. }
  6. else if(window.XMLHttpRequest){
  7. xmlHttp = new XMLHttpRequest();//支持 直接new
  8. }
  9. }//创建一个xmlHttp 对象
  10. function ajaxRequest(url,data,responseResult){//ajaxRequest是将请求发送到后台的function
  11. createXMLHttpRequest();//调用 创建一个XMLHttpRequest对象
  12. xmlHttp.open("POST",url,true);//规定请求的类型(post)、URL 以及是否异步处理请求(是)
  13. xmlHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");//类似HTML 表单那样 POST 数据 的http头
  14. xmlHttp.onreadystatechange = responseResult;//规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数
  15. xmlHttp.send(data);//发送数据
  16. }

//前台页面的区域select代码:

  1. </td>
  2. <th>区域:</th>
  3. <td>
  4. <select style="width: 152px" name="areaId"  id="areaId"  class="select_field" onchange="getWhmans(this.value)">
  5. <option value=""  style="color:#999999">-请选择-</option>
  6. <c:forEach items="${arealist}" var="area" >
  7. <option value="${area.id}">${area.areaName}</option>
  8. </c:forEach>
  9. </select><font color="red">*</font>
  10. </td>

//前台维护人select页面代码:

  1. <th>维护人员:</th>
  2. <td>
  3. <select  id="whman" style="width: 152px" class="select_field" name="whman" >
  4. <option value="" style="color:#999999">请选择</option>
  5. </select><font color="red">*</font>
  6. </td>

//以下是后台的部分代码

  1. List<Whperson> customers = factoryBO.getFugBO().getWhperson(area);//根据区域来得到该区域下的维护人信息 即选一个下拉框的区域后联动另一个下拉框带出该区域的维护人信息
  2. if (customers != null) {
  3. JSONArray jsonArray = new JSONArray();//new一个json数组
  4. for (Whperson whman : customers) {
  5. JSONObject obj = new JSONObject();
  6. obj.put("id", whman.getId());
  7. obj.put("name", whman.getName());
  8. jsonArray.add(obj);//循环new jsonObject 并把维护人信息 put进去 再add到josnArray里去
  9. }
  10. out.write(jsonArray.toString());//输出写到页面 即下面的responseText里面
  11. } else {
  12. out.write("null");
  13. }
  14. out.flush();
  15. out.close();
  1. function responseCustomer(){//后台响应完成后执行的function
  2. if(xmlHttp.readyState == 4){//4表示请求已完成 ,响应已就绪
  3. if(xmlHttp.status == 200){//表示ok
  4. var message=xmlHttp.responseText;//为后台返回过来的文本
  5. if(message=="null"){//若没有返回任何信息
  6. document.getElementById("id").options.length=1;//把id='id'的option下拉框置空
  7. return false;
  8. }
  9. var info2 = eval(message);  //解析一下json字符串
  10. document.getElementById("whman").options.length=1;把id='id'的option下拉框先置空
  11. $.each(info2, function(i,n){
  12. document.getElementById("whman").options.add(new Option(n.gridName,n.gridId));//给下拉框option加上后台返回的值 即增加下拉框选项
  13. });
  14. }
  15. }
  16. }
  17. function getGridByAreaId(val){//自己写的函数 另一个option onchange事件触发的函数,目的是选这个option后 想要的option能级联
  18. var url="village.do?method=getGridByAreaId";//请求后台的url
  19. var data="id="+val.value;//传入后台的参数
  20. ajaxRequest(url,data,responseCustomer);//实质要调用的ajax的函数
  21. }

二、Jquery ajax的实现

  1. function getWhmans(obj){
  2. var url="bbtj.do?method=getWhman";//请求后台的url
  3. $("#whman").empty();//先置空
  4. $("#whman").append($('<option value="">-请选择-</option>'));//加上--请选择--选项
  5. if($(obj).val()=="")
  6. return;//无值,返回
  7. url+="&areaId="+$(obj).val();//url参数
  8. url+="&t="+(new Date()).valueOf();//url参数
  9. $.ajax({
  10. url:url,
  11. type:'POST',//POST方式
  12. dataType:'text',//返回text类型
  13. beforeSend:function(xmlHttpRequest,status){
  14. },
  15. success:function(data,status){
  16. var d=eval(data);//解析
  17. $(d).each(function(index,entity){
  18. $("#whman").append($('<option value="'+entity['id']+'">'+entity['name']+'</option>'));//后台数据加到下拉框
  19. });
  20. },
  21. complete:function(xmlHttpRequest,status){
  22. },
  23. error:function(){
  24. }
  25. });
  26. }

JAVA EE 项目常用知识 之AJAX技术实现select下拉列表联动的两种用法(让你真正理解ajax)的更多相关文章

  1. JAVA EE 项目经常使用知识 之AJAX技术实现select下拉列表联动的两种使用方法(让你真正理解ajax)

    ajax 下拉列表联动的使用方法. ajax的定义: AJAX 是一种用于创建高速动态网页的技术. 通过在后台与server进行少量数据交换,AJAX 能够使网页实现异步更新.这意味着能够在不又一次载 ...

  2. 如何在tomcat中如何部署java EE项目

    如何在tomcat中如何部署java EE项目 1.直接把项目复制到Tomcat安装目录的webapps目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法.2.在tomcat安 ...

  3. idea 导入 eclipse java ee 项目,并使用 tomcat 7 部署运行

    1.导入java ee项目.直接open 2.导入jar依赖 3.修改编译的目录 4.修改tomcat目录 5.tomcat添加目录 请注意classes单词 D:\project\xxxxxx\We ...

  4. jQuery ajax调用后台aspx后台文件的两种常见方法(不是ashx)

    在asp.net webForm开发中,用Jquery ajax调用aspx页面的方法常用的有两种:下面我来简单介绍一下. [WebMethod] public static string SayHe ...

  5. [操作系统知识储备,进程相关概念,开启进程的两种方式、 进程Queue介绍]

    [操作系统知识储备,进程相关概念,开启进程的两种方式.进程Queue介绍] 操作系统知识回顾 为什么要有操作系统. 程序员无法把所有的硬件操作细节都了解到,管理这些硬件并且加以优化使用是非常繁琐的工作 ...

  6. 关于JAVA EE项目在WEB-INF目录下的jsp页面如何访问WebRoot中的CSS和JS文件

    找了这么久资料,总算解决了 感谢博客园:http://www.cnblogs.com/xsht/p/5275081.html 感谢百度:http://zhidao.baidu.com/link?url ...

  7. maven搭建java ee项目

    1.点击File->New->Other,选择maven project   2.选择maven project,点击Next,,而后再点击next,进入如下界面 如图选择最后一个,点击n ...

  8. 用maven搭建java ee项目

    一.开发环境 jdk1.7  tomcat7 eclipse-jee-luna-R-win32 maven2.2.1 二搭建步骤 1.点击File->New->Other,选择maven ...

  9. java两种动态代理方式的理解

    要理解动态代理,不妨先来看看一个静态代理的例子. 一.静态代理 以一个电商项目的例子来说明问题,比如我定义了一个订单的接口IOrder,其中有一个方法时delivery,代码如下. package c ...

随机推荐

  1. LCD实验学习笔记(八):中断

    s3c2440有60个中断源(其中15个为子中断源). 31个32位的通用寄存器,6个程序状态寄存器.有6种工作模式(系统/用户模式,快中断模式,管理模式,数据访问中止模式,中断模式,未定指令中止模式 ...

  2. 网络知识===wireshark抓包,三次握手分析

    TCP需要三次握手建立连接: 网上的三次握手讲解的太复杂抽象,尝试着使用wireshark抓包分析,得到如下数据: 整个过程分析如下: step1 client给server发送:[SYN] Seq ...

  3. 2017多校第6场 HDU 6105 Gameia 博弈

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6105 题意:Alice和Bob玩一个游戏,喷漆!现在有一棵树上边的节点最开始都没有被染色.游戏规则是: ...

  4. django使用用户名或手机号码登录

    django有自己的认证系统,会自动根据用户名和密码进行验证.如果需要使用用户名或手机登录的话,需要重写django的认证后台,并且设置到配置文件中. 重写django的认证后台 class User ...

  5. 《逐梦旅程 WINDOWS游戏编程之从零开始》笔记8——载入三维模型&Alpha混合技术&深度测试与Z缓存

    第17章 三维游戏模型的载入 主要是如何从3ds max中导出.X文件,以及如何从X文件加载三维模型到DirextX游戏程序里.因为复杂的3D物体,要用代码去实现,那太反人类了,所以我们需要一些建模软 ...

  6. 深入解析当下大热的前后端分离组件django-rest_framework系列二

    视图三部曲 一部曲 · 使用混合(mixins) 上一节的视图部分: from rest_framework.views import APIView from rest_framework.resp ...

  7. opencv c++实用操作

    像素遍历 对单通道图像的遍历处理 For( int i =0 ; i < grayim.rows; i++) For(int j = 0; j<grayim.cols; j++) Gray ...

  8. 前端读者 | 如何判断Javascript对象是否存在

    本文来自@阮一峰 Javascript语言的设计不够严谨,很多地方一不小心就会出错. 举例来说,请考虑以下情况. 现在,我们要判断一个全局对象myObj是否存在,如果不存在,就对它进行声明.用自然语言 ...

  9. tomcat放置静态html页面

    因公司tomcat网站需要部署一个html的静态网页上去 在项目目录下建立了一个 /usr/local/tomcat/apache-tomcat-brain-api/webapps/ROOT/html ...

  10. 转:python cgi编程

    转:http://www.runoob.com/Python/python-cgi.html 什么是CGI CGI 目前由NCSA维护,NCSA定义CGI如下: CGI(Common Gateway ...