接著上次的話題,下面的就是學生注冊時需要的學院,專業,班級,三層列表,
學院:

     
    
專業:

班級:


學院是上來就應該有的,我們把他放到了LabelValueBean里
public Vector getInstitutes()
    {
        Connection connection = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try
        {
            connection = getConnection();
            pstmt = connection.prepareStatement( "select * from institute" );
            rs = pstmt.executeQuery();
            Vector institutes = new Vector();
            institutes.add( new LabelValueBean( "請選擇所在學院", "" ) );
            while ( rs.next() )
            {
                institutes.add( new LabelValueBean(
                        rs.getString( "institute" ), rs.getString( "id" ) ) );
            }
            return institutes;
        }
        catch ( Exception e )
        {
            e.printStackTrace();
        }
        finally
        {
            close( rs );
            close( pstmt );
            close( connection );
        }
        return null;
    }
而當它選擇了一個學院后,相應的getDepartments(this.value)的js腳本就該工作了,還是四步
var xmlHttp;
function createXMLHttpRequest()
{
 if (window.XMLHttpRequest) 
 { 
  xmlHttp = new XMLHttpRequest(); 
 }
 else if (window.ActiveXObject) 
 {
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
}
發出請求
function getDepartments(institute) 
{
 createXMLHttpRequest()
 var url = "ajax.do?institute="+institute+"&method=getDepartments"
 xmlHttp.open("GET",url, true)
 xmlHttp.onreadystatechange = departments
 xmlHttp.send(null)
}
處理響應
function departments()
{
 if (xmlHttp.readyState == 4) 
 {
  if (xmlHttp.status == 200) 
  {
   resText = xmlHttp.responseText
   each = resText.split("|")
   buildSelect( each, document.getElementById("departmentId"), "請選擇所在專業");
  }
 }
}
function buildSelect(str,sel,label)
{
 sel.options.length=0;
 sel.options[sel.options.length]=new Option(label,"")
 for(var i=0;i