ajax.js:
var prjName="/projectName/";
var ajaxObj;

function createAjaxObject(){
    
try{return new ActiveXObject("Msxml2.XMLHTTP");}catch(e){};
    
try{return new ActiveXObject("Microsoft.XMLHTTP");}catch(e){};
    
try{return new XMLHttpRequest();}catch(e){};
    alert(
"XmlHttpRequest not supported!");
    
return null;
}

function $(id){
     
return document.getElementById(id);
}
city.jsp核心代码:
<fieldset><legend>添加城市</legend>
                                
<table>
                                    
<tr>
                                    
<td>
                                            
<select name="countries" style="width:95px" onchange="changeCountry(this)">
                                                
<%    
                                                    
                                                    List
<Country> counties = (List<Country>)request.getAttribute("countryLs");
                                                    
                                                    out.print(
"<option value='0'>----请选择----</option>");
                                                    
if(counties!=null || counties.size()>0){
                                                        
for (int i = 0; i < counties.size(); i++){
                                                            Country country 
= (Country)counties.get(i);
                                                            
String cid = country.getId();
                                                            out.print(
"<option value="+ cid +">"+ country.getCountry() +"</option>");
                                                        }
                                                    }
                                                    
                                                
%>
                                            
</select>
                                        
</td>
                                        
<td id="provincesTd">
                                            
<select name="provinces" style="width:95px" onchange="changeCountry(this)">
                                                
<%
                                                List
<Province> provinces = (List<Province>)request.getAttribute("provinceLs");
                                                    
                                                    out.print(
"<option value='0'>----请选择----</option>");
                                                    
if(provinces!=null || provinces.size()>0){
                                                        
for (int i = 0; i < provinces.size(); i++){
                                                            Province province 
= (Province)provinces.get(i);
                                                            
String pid = province.getId();
                                                            out.print(
"<option value="+ pid +">"+ province.getProvince() +"</option>");
                                                        }
                                                    }
                                                    
                                                
%>
                                            
</select>
                                        
</td>
                                        
<td>
                                            
<label>城市</label>
                                            
<input type="text" id="city" name="city" style="width: 200px; height: 25px" onfocus="changeProvince(this)" />
                                            
<input type="button" value="添加城市" style="width:80px; height: 25px" onclick="addCity()" />
                                        
</td>
                                    
</tr>
                                
</table>
                            
</fieldset>
changeCountry:
function changeCountry(obj){
    
//取得所选的国家
    var countryId = $("countries").value;
    
if(countryId == 0){
        alert(
"请选择国家,如国家列表为空,请先添加国家,以便能准确添加市级地区");
        $(
"countries").focus();
        
return;
    }
    
// 取得所选择的省
    else{
        url
="ChangeCountry?countryId=";
        
var countryId = $("countries").value;
        url
=url+countryId;
        xmlHtpRq
=ajaxObj=createAjaxObject();
        xmlHtpRq.open(
"GET",url,true);
        xmlHtpRq.setRequestHeader(
"Content-Type","text/html;charset=UTF-8");
        xmlHtpRq.onreadystatechange 
=function(){OnStatusChange();}// 注册回调函数,接收服务器的响应
        xmlHtpRq.send();
    }
    
}
OnStatusChange:
function OnStatusChange(){    //回调函数,接收服务器的响应()
            if(ajaxObj.readyState==4){
            
if (xmlHtpRq.status==200){            
                
var status = xmlHtpRq.responseXML.getElementsByTagName("status")[0].firstChild.data;
                
                
if( status == "ok"){    

                    
var subInnerHTML = xmlHtpRq.responseXML.getElementsByTagName("content")[0].xml;
                    
                    
//alert(subInnerHTML);
                    
                    
var classNameDiv = document.getElementById("provincesTd");
                    
                    
var provinces = document.getElementById("provinces");
                    
                    document.getElementById(
"provincesTd").removeChild(provinces);
                    
                    classNameDiv.innerHTML
=subInnerHTML;
    
                } 
            }
            
else//页面不正常
                alert(xmlHtpRq.status);    // 输出状态码
                
            }       
changeProvinces:
function changeProvinces(obj,myarray){
    
//取得省份数组
    var arr = myarray;
    
var vform=obj.form;
    
// 取得省份下拉框并清除原有选项
    var provinces=vform["provinces"];
    provinces.length
=0;

    
// 重新填充到省份下拉框
    for(var i=0;i<arr.length;i++){
        provinces[i
+1]=new Option(arr[i],i);
    }    
}
ChangeCountryServlet:
package com.runsky.action;

import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.runsky.domain.City;
import com.runsky.domain.Country;
import com.runsky.domain.Province;
import com.runsky.service.BaseService;
import com.runsky.util.StringFormatUtil;

/**
 * 添加省份
 * 
 * 
@author Ying-er
 * 
@since 2010-1-14 下午03:34:36
 * 
@version 1.00 Ying-er 创建 2010-1-14 下午03:34:36
 
*/
public class ChangeCountryServlet extends HttpServlet {

    
/**
     * 
     
*/
    
private static final long serialVersionUID = 1343432526456565L;

    
public void doPost(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, java.io.IOException {
        
// Setup Response
        response.setContentType("text/xml;charset=UTF-8");
        response.setHeader(
"Cache-Control""no-cache");
        response.setCharacterEncoding(
"UTF-8");

        
// 取得输入参数
        String countryId = StringFormatUtil
                .getDecodeParamFromReq(
"countryId", request);
        
// System.out.println("------------------------------------------>"+str);
        BaseService<Province> pService = new BaseService<Province>();
        List
<Province> provinceList = pService.getByField(Province.class"countryId", countryId);
        PrintWriter out 
= response.getWriter();
        
            
if(provinceList.size()<1 || provinceList == null){
                out.println(
"<response>");
                out.println(
"<status>ok</status>");
                out.print(
"<content>");
                out.print(
"<select name='provinces' id='provinces'>");
                out.print(
"<option value='0'> --    无数据   -- </option>");
                out.print(
"</select>");
                out.print(
"</content>");
                out.println(
"</response>");
            }
            
else{
                out.println(
"<response>");
                out.println(
"<status>ok</status>");
                out.print(
"<content>");
                    out.print(
"<select name='provinces' id='provinces'>");
                    out.print(
"<option value='0'> -- 请选择 -- </option>");
                    
for(Province province : provinceList){
                        out.print(
"<option value='" + province.getId() + "'>"
                                
+ province.getProvince() + "</option>");
                    }
                    out.print(
"</select>");
                out.print(
"</content>");
                out.println(
"</response>");
            }
            
        
    }

    
public void doGet(HttpServletRequest request, HttpServletResponse response)
            
throws ServletException, java.io.IOException {
        doPost(request, response);
    }
}





posted on 2010-05-29 19:01 Ying-er 阅读(502) 评论(1)  编辑  收藏

评论:
# re: 与数据库交互的二级联动 2010-05-30 09:51 | Ora
不错。  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: