AJAX開發執行個體

來源:互聯網
上載者:User
描述: 初始頁面
圖片:
描述: 一級菜單
圖片:
描述: 二級菜單
圖片:

使用ajax實現動態菜單。菜單內容從資料庫中讀取。相關表的定義如下:
CREATE TABLE [dbo].[tsys_menu] (
     [mn_id] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [parent_mn_id] [varchar] (16) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [mn_name] [varchar] (50) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [mn_order] [int] NOT NULL ,
     [mn_type] [char] (1) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [target_url] [varchar] (200) COLLATE Chinese_PRC_CI_AS NOT NULL ,
     [exp_url] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
     [help_url] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
     [memo] [varchar] (200) COLLATE Chinese_PRC_CI_AS NULL ,
     [context_type] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
     [manual_type] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
     [expert_type] [char] (1) COLLATE Chinese_PRC_CI_AS NULL ,
     [case_type] [char] (1) COLLATE Chinese_PRC_CI_AS NULL
) ON [PRIMARY]
GO

此次執行個體使用了dev2dev.bea.com.cn中的ajax模板。原文在址如下:
http://dev2dev.bea.com.cn/bbsdoc/20051114125.html
作者:柯自聰
本人建議,所有人都認真看看那篇文章,的確寫的很好。
以下是頁面內容ybg-menu.htm
<html>
<head>
<title>menu</title>
<script language="javascript">
     var http_request = false;
    var currentPos = false;
     function send_request(url) {//初始化、指定處理函數、發送請求的函數
           http_request = false;
           //開始初始化XMLHttpRequest對象
           if(window.XMLHttpRequest) { //Mozilla 瀏覽器
                 http_request = new XMLHttpRequest();
                 if (http_request.overrideMimeType) {//設定MiME類別
                       http_request.overrideMimeType("text/xml");
                 }
           }
           else if (window.ActiveXObject) { // IE瀏覽器
                 try {
                       http_request = new ActiveXObject("Msxml2.XMLHTTP");
                 } catch (e) {
                       try {
                             http_request = new ActiveXObject("Microsoft.XMLHTTP");
                       } catch (e) {}
                 }
           }
           if (!http_request) { // 異常,建立對象執行個體失敗
                 window.alert("不能建立XMLHttpRequest對象執行個體.");
                 return false;
           }
           http_request.onreadystatechange = processRequest;
           // 確定發送請求的方式和URL以及是否同步執行下段代碼
           http_request.open("GET", url, true);
           http_request.send(null);
     }
     // 處理返回資訊的函數
  function processRequest() {
    if (http_request.readyState == 4) { // 判斷對象狀態
        if (http_request.status == 200) { // 資訊已經成功返回,開始處理資訊
          document.getElementById(currentPos).innerHTML = http_request.responseText;
        } else { //頁面不正常
          alert("您所請求的頁面有異常。");
        }
    }
  }

  function showMenu(obj) {
     document.getElementById(obj).parentNode.style.display = "";
     document.getElementById(obj).innerHTML = "正在讀取資料..."
     currentPos = obj;
     send_request("playMenu.jsp?parent_id="+obj);
}

</script>
</head>
<body>
<table>
<tr>
<td>
<a href="javascript:showMenu('ROOT')">ROOT</a>
<td>
</tr>
<tr>
<td id='ROOT'></td>
</tr>
</table>
</body>
</html>


以下是jsp內容playMenu.jsp

<%@ page contentType="text/html;charset=GBK"%>
<%@page import="com.jfcgf.frame.util.DbUtil"%>
<%@ page import="java.sql.*"%>

<%
  DbUtil db = new DbUtil();
     String parent_id = request.getParameter("parent_id");
     String sql = "select mn_id,mn_name from tsys_menu where parent_mn_id = '"+parent_id+"'";
     //執行上面的sql
     try{
           ResultSet rs = db.executeQuery(sql);
           while(rs.next()){
                 String item = "<table><tr valign=/"top/"><td>----></td><td><a href=/"javascript:showMenu(/'"+rs.getString("mn_id")+"')/">"+
                       rs.getString("mn_name")+"</a></td><td id='"+rs.getString("mn_id")+"'></td></tr><br /></table>";
                 out.println(item);
           }
     }catch(Exception e){
    out.println(e.toString());
  }finally{
    if(db != null){
            db.closeConnection(); db = null;
    }
  }

%>
注意:DbUtil類是一個串連資料庫的javabean,如果想試試上面的代碼,這裡需要更改成你自己的類。
附件是實現啟動並執行截圖。 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.