Rumah Java javaTutorial java AJAX实现级联下拉框

java AJAX实现级联下拉框

Jan 12, 2017 am 09:29 AM

package com.ajaxlab.ajax; 
import java.util.ArrayList; 
import java.util.Collection; 
import java.util.Iterator; 
import org.jdom.Document; 
import org.jdom.Element; 
import org.jdom.input.SAXBuilder; 
import com.ajaxlab.ajax.ProductClass; 

public class ClassService ...{ 
private Document dom; 
public ClassService()...{ 
try...{ 
SAXBuilder builder=new SAXBuilder(); 
this.dom=builder.build(ClassService.class.getResource("product.xml")); 
}catch(Exception e)...{ 
e.printStackTrace(); 
} 
} 
public ProductClass[] getAllClass1()...{ 
Collection products=new ArrayList(); 
Iterator iterator=this.dom.getRootElement().getChildren().iterator(); 
do...{ 
Element element=(Element)iterator.next(); 
ProductClass product=new ProductClass(element.getAttributeValue("id"), 
element.getAttributeValue("className")); 
products.add(product); 
}while(iterator.hasNext()); 
return (ProductClass[])products.toArray(new ProductClass[0]); 

} 

public ProductClass[] getAllClass2ById(String class1Id)...{ 
Collection products=new ArrayList(); 
Element classElement=null; 
Iterator iterator=this.dom.getRootElement().getChildren().iterator(); 
do...{ 
Element element=(Element)iterator.next(); 
if(class1Id.equalsIgnoreCase(element.getAttributeValue("id")))...{ 
classElement=element; 
break; 
} 
}while(iterator.hasNext()); 

if(classElement!=null)...{ 
Iterator iter=classElement.getChildren().iterator(); 
do...{ 
Element element=(Element)iter.next(); 
ProductClass product=new ProductClass(element.getAttributeValue("id"), 
element.getAttributeValue("className")); 
products.add(product); 
}while(iter.hasNext()); 
return (ProductClass[])products.toArray(new ProductClass[0]); 
} 
else...{ 
return null; 
} 
} 


public ProductClass[] getAllClass3ById(String class1Id,String class2Id) ...{ 
Collection products = new ArrayList(); 
Element class1Element = null; 
Element class2Element = null; 

Iterator iterator = this.dom.getRootElement().getChildren().iterator(); 
do ...{ 
Element element = (Element)iterator.next(); 
if(class1Id.equalsIgnoreCase(element.getAttributeValue("id"))) ...{ 
class1Element = element; 
break; 
} 
}while(iterator.hasNext()); 

if(class1Element!=null) ...{ 
Iterator iter = class1Element.getChildren().iterator(); 
do ...{ 
Element element = (Element)iter.next(); 
if(class2Id.equalsIgnoreCase(element.getAttributeValue("id"))) ...{ 
class2Element = element; 
break; 
} 
}while(iter.hasNext()); 

if(class2Element!=null) ...{ 
Iterator iter2 = class2Element.getChildren().iterator(); 
do ...{ 
Element element = (Element)iter2.next(); 
ProductClass product = new ProductClass(element.getAttributeValue("id"),element.getAttributeValue("className")); 
products.add(product); 
}while(iter2.hasNext()); 
} 
return (ProductClass[])products.toArray(new ProductClass[0]); 
} 
else return null; 
} 
} 


<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE class SYSTEM "product.dtd" > 
<class> 
<class1 className="电脑配件" id="1"> 
<class2 className="内存" id="1"> 
<class3 id="1" className="kingmax"></class3> 
<class3 id="2" className="kingston"></class3> 
<class3 id="3" className="samsung"></class3> 
<class3 id="4" className="hydadi"></class3> 
<class3 id="5" className="ibm"></class3> 
</class2> 
<class2 className="硬盘" id="2"> 
<class3 id="6" className="hithait"></class3> 
<class3 id="7" className="IBM"></class3> 
<class3 id="8" className="samsung"></class3> 
<class3 id="9" className="westdata"></class3> 
</class2> 
</class1> 

<class1 className="食品配件" id="2"> 
<class2 className="汉堡包" id="1"> 
<class3 id="1" className="麦当劳"></class3> 
<class3 id="2" className="肯得基"></class3> 
<class3 id="3" className="罗杰丝"></class3> 
</class2> 
<class2 className="饮料" id="2"> 
<class3 id="4" className="cocacola"></class3> 
<class3 id="5" className="sprite"></class3> 
<class3 id="6" className="coffee"></class3> 
<class3 id="7" className="water"></class3> 
</class2> 
</class1> 
</class> 


<?xml version="1.0" encoding="GB2312" ?> 
<!ELEMENT class (class1+)> 
<!ELEMENT class1 (class2+)> 
<!ATTLIST class1 className NMTOKEN #REQUIRED> 
<!ATTLIST class1 id NMTOKEN #REQUIRED> 
<!ELEMENT class2 (class3+)> 
<!ATTLIST class2 className NMTOKEN #REQUIRED> 
<!ATTLIST class2 id NMTOKEN #REQUIRED> 
<!ELEMENT class3 EMPTY> 
<!ATTLIST class3 className NMTOKEN #REQUIRED> 
<!ATTLIST class3 id NMTOKEN #REQUIRED> 

JSP: 
(1)getClass.jsp 充当业务层供ajax调用 
<%@ page contentType="text/html; charset=gb2312"%> 
<%@ page import="com.ajaxlab.ajax.*"%> 
<% 
String class1Id = request.getParameter("class1Id"); 
String class2Id = request.getParameter("class2Id"); 
if("".equals(class1Id)) class1Id = null; 
if("".equals(class2Id)) class2Id = null; 
ClassService service = new ClassService(); 
if((class1Id!=null)&&(class2Id==null)) ...{ 
ProductClass[] classes = service.getAllClass2ById(class1Id); 
if(classes!=null) ...{ 
for(int i=0;i<classes.length;i++) ...{ 
out.print(classes[i].getId()+","+classes[i].getClassName()+"|"); 
} 
} 
} 
else if((class1Id!=null)&&(class1Id!=null)) ...{ 
ProductClass[] classes = service.getAllClass3ById(class1Id,class2Id); 
if(classes!=null) ...{ 
for(int i=0;i<classes.length;i++) ...{ 
out.print(classes[i].getId()+","+classes[i].getClassName()+"|"); 
} 
} 
} 
%> 

(2)divmenu.jsp 
<%@ page contentType="text/html; charset=gb2312"%> 
<%@ page import="com.ajaxlab.ajax.*"%> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
<head> 
<script type="text/javascript" src="ajax_func.js" ></script> 
<script type="text/javascript"> 

function doChange() ...{ 
var f = document.forms[0]; 
send_request("GET","getClass.jsp?class1Id="+f.select11.value+"&class2Id=",null,"TEXT",populateClass2); 
} 
function doChange2() ...{ 
var f = document.forms[0]; 
send_request("GET","getClass.jsp?class1Id="+f.select11.value+"&class2Id="+f.select12.value,null,"TEXT",populateClass3); 
} 
function populateClass2()...{ 
var f=document.forms[0]; 
if(http_request.readystate==4)...{ 
if(http_request.status==200)...{ 
var list=http_request.responseText; 
var classList=list.split("|"); 
f.select12.options.length=1; 
for(var i=0;i<classList.length-1;i++)...{ 
var temp=Trim(classList[i]).split(","); 
f.select12.add(new Option(temp[1],temp[0])); 
} 
} 
} 
} 

function populateClass3()...{ 
var f=document.forms[0]; 
if(http_request.readystate==4)...{ 
if(http_request.status==200)...{ 
var list=http_request.responseText; 
var classList=list.split("|"); 
f.select13.options.length=1; 
for(var i=0;i<classList.length-1;i++)...{ 
var temp=Trim(classList[i]).split(","); 
f.select13.add(new Option(temp[1],temp[0])); 
} 
} 
} 
} 
function LTrim(str) 
...{ 
var whitespace = new String(" "); 
var s = new String(str); 
if (whitespace.indexOf(s.charAt(0)) != -1) 
...{ 
var j=0, i = s.length; 
while (j < i && whitespace.indexOf(s.charAt(j)) != -1) 
...{ 
j++; 
} 
s = s.substring(j, i); 
} 
return s; 
} 
function RTrim(str) 
...{ 
var whitespace = new String(" "); 
var s = new String(str); 
if (whitespace.indexOf(s.charAt(s.length-1)) != -1) 
...{ 
var i = s.length - 1; 
while (i >= 0 && whitespace.indexOf(s.charAt(i)) != -1) 
...{ 
i--; 
} 
s = s.substring(0, i+1); 
} 
return s; 
} 
function Trim(str) 
...{ 
return RTrim(LTrim(str)); 
} 
</script> 
<% 
ClassService service = new ClassService(); 
ProductClass[] classes = service.getAllClass1(); 
%> 
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 
<title>Insert title here</title> 
</head> 
<body><center> 
<form name="classForm" method="post" action=""> 
<select name="select11" id="select11" onchange="doChange(this.value)"> 
<option value="">请选择分类一</option> 
<% 
for(int i=0;i<classes.length;i++) ...{ 
out.println("<option value=&#39;"+classes[i].getId()+"&#39;>"+classes[i].getClassName()+"</option>"); 
} 
%> 
</select> 

<select name="select12" id="select12" onchange="doChange2(this.value)"> 
<option value="">请选择分类二</option> 
</select> 

<select name="select13" id="select13"> 
<option value="">请选择分类三</option> 
</select> 
</form> 
</center></body> 
</html>
Salin selepas log masuk

更多java AJAX实现级联下拉框相关文章请关注PHP中文网!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Akan R.E.P.O. Ada Crossplay?
1 bulan yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)