avanry 2008-10-31 17:00
浏览 270
已采纳

ajax,jsp,xml二级级联下拉列表

我想做一个简单的ajax,jsp,xml三者结合的二级级联下拉框,就是把数据放到xml文件中
但我不知道如何读取xml中的数据,如何获取list,再按照选中的查找...
我已经做了ajax,jsp从数据库中读取数据。但不知如何修改!还有xml文件放哪儿呢?放到web-inf下吗?还是和jsp放在一起?
请大家帮忙,指点指点
谢谢
index.jsp
[code="java"]<%@ page language="java" import="java.util.*,java.sql.*" pageEncoding="gb2312"%>



<%
String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接sql数据库的方法
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
String userName = "用户名";
String password = "密码";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List listb = new ArrayList();
try{
    Class.forName(dbDriver); 
} catch(java.lang.ClassNotFoundException e) {
    e.printStackTrace();
}
try {
    conn = DriverManager.getConnection(url,userName,password); 
    st=conn.createStatement();
    String sqlQuery="sql语句";
    rs=st.executeQuery(sqlQuery);
    while (rs.next())
    {
        listb.add(rs.getString(1));
    }
    rs.close();
    st.close();
    conn.close();
}  catch (Exception e)  {   
    e.printStackTrace();
}

%>

var XMLHttpReq; //创建XMLHttpRequest对象 function createXMLHttpRequest() { if(window.XMLHttpRequest) { //Mozilla 浏览器 XMLHttpReq = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE浏览器 try { XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } } //发送请求函数 function sendRequest(url) { createXMLHttpRequest(); XMLHttpReq.open("GET", url, true); XMLHttpReq.onreadystatechange = processResponse;//指定响应函数 XMLHttpReq.send(null); // 发送请求 } // 处理返回信息函数 function processResponse() { if (XMLHttpReq.readyState == 4) { // 判断对象状态 if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息 updateMenu(); } else { //页面不正常 alert("您所请求的页面有异常。"); } } } //更新菜单函数 function updateMenu() { var res=XMLHttpReq.responseXML.getElementsByTagName("res") /**下面是用innerHTML输出控件内容的一般用法 * var subMenu = ""; * for(var i = 0; i < res.length; i++) { * subMenu = subMenu + " " + res[i].firstChild.data + ""; * } * currentSort.innerHTML = subMenu; **/ var list = document.all.list; list.options.length=0; list.add(new Option("---请选择---","")); for(var i=0;i<res.length;i++){ list.add(new Option(res[i].firstChild.data,res[i].firstChild.data)); } } // 创建级联菜单函数 function showSubMenu(obj) { sendRequest("menu.jsp?sort=" + obj ); /**下面这一句的作用是:每次选择后回到第一个选项**/ // document.all.mli.options[0].selected=true; }




---------请选择----------
<%
for(int i=0;i {
out.println(""+listb.get(i)+"");
}
%>


---请选择---



[/code]

menu.jsp
[code="java"]
HTML code<%@ page contentType="text/html; charset=GB2312" import="java.util.*,java.sql.*" %>
<%
String sort=new String(request.getParameter("sort").getBytes("iso-8859-1"),"GB2312");
System.out.print("sort="+sort);
String dbDriver = "com.microsoft.jdbc.sqlserver.SQLServerDriver"; //连接sql数据库的方法
String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=test";
String userName = "用户名";
String password = "密码";
Connection conn = null;
Statement st = null;
ResultSet rs = null;
List lists = new ArrayList();

try{
    Class.forName(dbDriver); 
} catch(java.lang.ClassNotFoundException e) {
    e.printStackTrace();
}

try {
    conn = DriverManager.getConnection(url,userName,password); 
    st=conn.createStatement();
    rs=st.executeQuery("sql语句");
    while (rs.next())
    {
        lists.add(rs.getString(1));
    }
    rs.close();
    st.close();
    conn.close();
}  catch (Exception e)  {   
    e.printStackTrace();
}
response.setContentType("text/xml; charset=gb2312");
response.setHeader("Cache-Control", "no-cache");
response.getWriter().write("<?xml   version=\"1.0\"   encoding=\"gb2312\"?>");
out.println("<response>");
for(int i=0;i<lists.size();i++)
{
    out.println("<res>" + lists.get(i).toString() + "</res>");
}
out.println("</response>");

%>
[/code]

  • 写回答

3条回答 默认 最新

  • linpyi 2008-11-05 16:29
    关注

    [quote]
    //先创建一个XML对象
    var xmlDoc = null;//new ActiveXObject("Microsoft.XMLDOM");
    try{
    xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
    }catch(e){
    xmlDoc = document.implementation.createDocument("","",null);

    }
    //把你传回的数据使用方法解析
    function parseMessage(s){
    xmlDoc.loadXML(s);//倒入XML
    var nodelist=xmlDoc.selectNodes("//M");//选取XML节点M开头
    for(var ni=0;ni<nodelist.length;ni++)
    {
    msgtype=node.getAttribute("tp");//获取上面取的某个XML节点里的 tp字段的值
    }
    }
    这里只是写了个大概,具体可以参考JS读取XML手册,也可以使用document.getElementsByTagName("");
    [/quote]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64