首页 > 编程知识 正文

js调数据库二级联动,js二级联动下拉列表怎么实现

时间:2024-03-25 09:50:25 阅读:333396 作者:IIBB

本文目录一览:

二级联动菜单,数据是从数据库的一个表中查询出来的,js显示之后在显示下一条的时候如何清空之前显示的。

这里有一个多级联动下拉select菜单

还可以自己设置默认显示值

里面有代码可以参考

jsp二级联动js参数回填表单的问题

用AJAX

基于Servlet的AJAX

这是一个很常见的UI,当用户在第一个选择框里选择ZHEJIANG时,第二个选择框要出现ZHEJIANG的城市;当用户在第一个选择框里选择JIANGSU时,第二个选择框里要出现JIANGSU的城市。

首先,我们来看配置文件web.xml,在里面配置一个servlet,跟往常一样:

web-app version="2.4"

xmlns=""

xmlns:xsi=""

xsi:schemaLocation="

"

servlet

servlet-nameSelectCityServlet/servlet-name

servlet-classcom.stephen.servlet.SelectCityServlet/servlet-class

/servlet

servlet-mapping

servlet-nameSelectCityServlet/servlet-name

url-pattern/servlet/SelectCityServlet/url-pattern

/servlet-mapping

/web-app

然后,来看我们的JSP文件:

!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

html

head

titleMyHtml.html/title

meta http-equiv="keywords" content="keyword1,keyword2,keyword3"

meta http-equiv="description" content="this is my page"

!--link rel="stylesheet" type="text/css" href="./styles.css"--

/head

script type="text/javascript"

function getResult(stateVal) {

var url = "servlet/SelectCityServlet?state="+stateVal;

if (window.XMLHttpRequest) {

req = new XMLHttpRequest();

}else if (window.ActiveXObject) {

req = new ActiveXObject("Microsoft.XMLHTTP");

}

if(req){

req.open("GET",url, true);

req.onreadystatechange = complete;

req.send(null);

}

}

function complete(){

if (req.readyState == 4) {

if (req.status == 200) {

var city = req.responseXML.getElementsByTagName("city");

;

var str=new Array();

for(var i=0;icity.length;i++){

str[i]=city[i].firstChild.data;

}

(document.getElementById("city"));

buildSelect(str,document.getElementById("city"));

}

}

}

function buildSelect(str,sel) {

sel.options.length=0;

for(var i=0;istr.length;i++) {

sel.options[sel.options.length]=new Option(str[i],str[i])

}

}

/script

body

select name="state" onChange="getResult(this.value)"

option value=""Select/option

option value="zj"ZEHJIANG/option

option value="zs"JIANGSU/option

/select

select id="city"

option value=""CITY/option

/select

/body

/html

第一眼看来,跟我们平常的JSP没有两样。仔细一看,不同在JS里头。

我们首先来看第一个方法:getResult(stateVal),在这个方法里,首先是取得XmlHttpRequest;然后设置该请求的url:req.open("GET",url, true);接着设置请求返回值的接收方法:req.onreadystatechange = complete;该返回值的接收方法为——complete();最后是发送请求:req.send(null);

然后我们来看我们的返回值接收方法:complete(),这这个方法里,首先判断是否正确返回,如果正确返回,用DOM对返回的XML文件进行解析。关于DOM的使用,这里不再讲述,请大家参阅相关文档。得到city的值以后,再通过buildSelect(str,sel)方法赋值到相应的选择框里头去。

最后我们来看看Servlet文件:

import java.io.IOException;

import java.io.PrintWriter;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

/**

* @author Administrator

*

* TODO To change the template for this generated type comment go to

* Window - Preferences - Java - Code Style - Code Templates

*/

public class SelectCityServlet extends HttpServlet {

public SelectCityServlet() {

super();

}

public void destroy() {

super.destroy();

}

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/xml");

response.setHeader("Cache-Control", "no-cache");

String state = request.getParameter("state");

StringBuffer sb=new StringBuffer("state");

if ("zj".equals(state)){

sb.append("cityhangzhou/citycityhuzhou/city");

} else if("zs".equals(state)){

sb.append("citynanjing/citycityyangzhou/citycitysuzhou/city");

}

sb.append("/state");

PrintWriter out=response.getWriter();

out.write(sb.toString());

out.close();

}

}

这个类也十分简单,首先是从request里取得state参数,然后根据state参数生成相应的XML文件,最后将XML文件输出到PrintWriter对象里。

js 二级联动, 参数不同 谢谢

我今天写了一个二级联动的例子,非常简单,你试试看:

script type=text/javascript

var ss1=['名称一','名称二','名称三'];

var ss2=[['规格1.1','规格1.2'],

['规格2.1','规格2.2','规格2.3'],

['规格3.1','规格3.2','规格3.3','规格3.4']];

document.write('选择名称:select name=select1 onChange="chg_select2(this.selectedIndex);"');

document.write('option',ss1.join('option'));

document.write('/selectbr');

document.write('选择规格:select name=select2');

document.write('option',ss2[0].join('option'));

document.write('/selectbr');

function chg_select2(n){

for (i=select2.options.length;i=0;i--) select2.options[i]=null;

for (i=0;iss2[n].length;i++) select2.options[select2.options.length]=new Option(ss2[n][i],ss2[n][i]);

}

/script

在线等高手指教怎么在JSP页面做JS二级联动效果

简单的说下原理吧

第一个下拉框变动,可以调用js的onchange时间,然后清空第二个下拉框,走ajax查询第二个下拉框的所有数据,最后拼到页面上。

js实现的二级联动,修改时,从数据库里读的值给城市赋不了值

JS联动AJAX异步操作的数据库,这是为了显示相应的子类别后,选择最大的一类。

,直接读取数据库不等于显示列表。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。