今天看了一个Ajax实现级联下拉列表的例子。在createAjax.js文件中。
var httprequest;
function createAjax(url,callback) {
if (window.XMLHttpRequest) {
httprequest=new XMLHttpRequest();
}
else {
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
if (httprequest) {
httprequest.onreadystatechange=callback;
httprequest.open("GET",url,true);
httprequest.send(null);
}
else {
;
}
}
function createAjax(url,callback) {
if (window.XMLHttpRequest) {
httprequest=new XMLHttpRequest();
}
else {
httprequest=new ActiveXObject("Microsoft.XMLHTTP");
}
if (httprequest) {
httprequest.onreadystatechange=callback;
httprequest.open("GET",url,true);
httprequest.send(null);
}
else {
;
}
}
function getProvinceInfo() {
if (httprequest.readyState==4) {
if (httprequest.status==200) {
var provincearr=httprequest.responseText.split(","); //servlet类的处理返回的是一个省份之间用,隔开的字符串。
for(var i=0;i
document.getElementById_x("province").options[i]=new Option(provincearr[i],provincearr[i]);
if (httprequest.readyState==4) {
if (httprequest.status==200) {
var provincearr=httprequest.responseText.split(","); //servlet类的处理返回的是一个省份之间用,隔开的字符串。
for(var i=0;i
document.getElementById_x("province").options[i]=new Option(provincearr[i],provincearr[i]);
}
}
// 通过id获取selcet下拉列表,然后options[i]=new Option(text,value);可以实现在下拉框中添加option属性
function getProvince() {
createAjax("servlet/GetInfo?action=getprovince&nocache="+new Date().getTime(),getProvinceInfo);
function getProvince() {
createAjax("servlet/GetInfo?action=getprovince&nocache="+new Date().getTime(),getProvinceInfo);
//nocache参数的作用是为了得到实时的结果,不加可能得到的是浏览器缓存之后的结果。
}
function getCityInfo() {
if (httprequest.readyState==4) {
if (httprequest.status==200) {
var cityarr=httprequest.responseText.split(",");
document.getElementById_x("city").length=0;
for(var i=0;i
document.getElementById_x("city").options[i]=new Option(cityarr[i],cityarr[i]);
}
}
}
}
function getCity(parentProvince) {
createAjax("servlet/GetInfo?action=getcity&parentProvince="+parentProvince+"&nocache="+new Date().getTime(),getCityInfo);
}
}
function getCityInfo() {
if (httprequest.readyState==4) {
if (httprequest.status==200) {
var cityarr=httprequest.responseText.split(",");
document.getElementById_x("city").length=0;
for(var i=0;i
document.getElementById_x("city").options[i]=new Option(cityarr[i],cityarr[i]);
}
}
}
}
function getCity(parentProvince) {
createAjax("servlet/GetInfo?action=getcity&parentProvince="+parentProvince+"&nocache="+new Date().getTime(),getCityInfo);
}
index.jsp文件中,
请选择:
请选择:
servlet中,新增了两个方法getProvince(request,response)和getCities(request,response)
doGet方法中获取action的值并判断,如果为getprovince则执行getProvince方法 在该方法中获取所有省份的字符串,城市之间以","隔开。同理getCities()方法中也是如此。