<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA流通橋

    JAVA啟發者

    統計

    留言簿(3)

    AJAX相關網址

    Eclipse相關網址

    Hibernate

    java相關網址

    LINUX相關網址

    webwork相關網址

    友好鏈接

    閱讀排行榜

    評論排行榜

    Rico入門

    0. 簡介。
    一個支援 AJAX的 javascript library,夠簡單吧。

    1. 下載 Rico的 js file。
    http://openrico.org/ 下載 prototype.js 和 rico.js。

    2. include js file。
    網頁裡加上下面兩個設定(假設步驟一下載的檔案放在scripts目錄)。
    1
    2
    <script src="scripts/prototype.js"></script>
    <script src="scripts/rico.js"></script>
    


    3. 在網頁裡設定 request。
    一個網頁可以設定多個request,而且這個最好設定成全域變數,
    這樣就可以共用這個 request URL,requestName只是識別用,所以可以任意命名。
    1
    2
    3
    ajaxEngine.registerRequest("requestName","requestURL");
    //例如
    ajaxEngine.registerRequest("getPersonInfo","getPersonInfo.do");
    


    4. 設定回傳時要對應的物件。
    設定回傳時要對應的物件的目的,是要指定回傳資料內容,對應到網頁那個物件,或交由誰處理。
    Rico的回傳物件有兩種,一種是element一種是object,
    差別在於element是任意格式,但只能對應單一網頁物件,object可以多筆,可以寫自己的回傳事件。
    另外設定的時間點也要注意,就是說如果網頁物件還沒產生,就先設定,那麼會不 work。

    4-1 設定回傳後會變更網頁的那個 element。
    registerAjaxElement如果只給一個參數,則自動對應同名ID的網頁物件,
    回傳時直接用回傳內容修改對應網頁物件的innerHTML,所以沒有可自己處裡的事件。
    1
    2
    3
    4
    //對應到同名的 elementId
    ajaxEngine.registerAjaxElement("elementId");
    //回傳的 fromElementId內容,會變更 toElementId物件
    ajaxEngine.registerAjaxElement("fromElementId",$("toElementId"));
    


    4-2 設定回傳後要由哪個 object處理。
    Rico會將回傳資料當參數,傳給對應 object的 ajaxUpdate,所以自己寫的object必須有這個method。
    也就自己處理回傳後事件的起點。
    1
    ajaxEngine.registerAjaxObject("objectId",new UserObject());
    


    4-3 回傳的XML格式。
    回傳值必須是下面格式的XML,所以回傳內容的 contentType必須是 application/xml,
    還有中文在UTF8格式時可以正常顯示,其他編碼都會看到亂碼。
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <ajax-response> 
    <response type="element|object" id="elementId">
      response可以有一或多個,也可以element object混用
    </response>
    </ajax-response> 
    //例如
    <ajax-response> 
    <response type="object" id="objectId">
      <returnObject name="Hello" age="1" />
      <returnObject name="World" age="99" />
    </response>
    <response type="element" id="elementId">Hello World</response>
    </ajax-response> 
    


    5. 網頁事件。
    當網頁事件發生時,要做的就是送出request,此時會根據對應的 requestName,
    找到對應的URL來傳送資料,
    只要再把要傳遞的參數傳給 sendRequest就可以了。
    1
    2
    3
    ajaxEngine.sendRequest("getPersonInfo", 
                            "firstName=" + firstName, 
                            "lastName=" + lastName ); 
    


    5-1 post
    如果要用poet的方式傳送資料,就比較麻煩,要用這種方式。
    1
    2
    3
    var params="rName="+document.getElementById("userName").value+"&rAge="+document.getElementById("age").value;
    //post要小寫。
    ajaxEngine.sendRequest("hello",{method:"post",parameters:params});
    


    6. 範例
    最後來個矬矬的範例吧,把下面三個程式放在一起就可以測試了,當然,別忘了下載 Rico的js file。

    6-1 主網頁
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <html>
    <head>
    <script src="js/prototype.js" type="text/javascript"></script>
    <script src="js/rico.js" type="text/javascript"></script>
    <script language="javascript">
      ajaxEngine.registerRequest("getElement", "returnElement.jsp");
      ajaxEngine.registerRequest("getObject", "returnObject.jsp");
      
    function runMe1() {
      ajaxEngine.registerAjaxElement("helloId");
      ajaxEngine.registerAjaxElement("sayHello");
      ajaxEngine.registerAjaxElement("fromElementId",$("toElementId"));      
    ?
      var pramas = "Name="+document.getElementById("userName").value;
      ajaxEngine.sendRequest("getElement",pramas);
    }
    ?
      ajaxEngine.registerAjaxObject("objectId",new UserObject());
      
    function runMe2(){
    ajaxEngine.sendRequest("getObject",
                           "rName="+document.getElementById("uName").value,
                           "rAge="+document.getElementById("age").value);
    //這是post的方法//var params="rName="+document.getElementById("userName").value+//   "&rAge="+document.getElementById("age").value;//ajaxEngine.sendRequest("hello",{method:"post",parameters:params});}
    function UserObject(){
    this.ajaxUpdate=function(ajaxResponse){//alert(ajaxResponse);
       var objs = ajaxResponse.getElementsByTagName('returnObject');
       var tabStr="<table border='1'><tr><td>姓名</td><td>年齡</td></tr>"for(var i=0;i<objs.length;i++){
           tabStr+="<tr><td>";
    ??   tabStr+=objs[i].getAttribute("name")+"</td><td>"+objs[i].getAttribute("age");
           tabStr+="</td></tr>";??   
       }
       tabStr+="</table>";
    ?
       this.setValue(tabStr);
    }
    this.setValue=function(str){
       document.getElementById("result").innerHTML=str;
    }}
    </script>
    </head>
    <body>
    <h3>Element Test</h3>
    Your Name:<input type="text" id="userName" name="userName">
    <input type="button" name="BT" value="click me" onclick="runMe1()">
    <table><tr><td><div id="helloId"></div></td><td><div id="toElementId"></div></td></tr></table>
    <div id="sayHello"></div>
    <hr>
    <h3>Object Test</h3>
    Your Name:<input type="text" id="uName" name="uName">
    Your Age:<input type="text" id="age" name="age">
    <input type="button" value="Click Me" onclick="runMe2()">
    <div id="result"></div>
    </body>
    </html>
    


    6-2 returnElement.jsp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    response.setContentType("application/xml");
    %>    
    <ajax-response> 
    <response type="element" id="helloId"><span style="color:#008000">Hello</span></response> 
    <response type="element" id="fromElementId"><%=request.getParameter("Name")%></response>
    <response type="element" id="sayHello">
    <script language="javascript">
    alert("Hello "+<%=request.getParameter("Name")%>);
    </script>
    </response>
    </ajax-response> 
    


    6-3 returnObject.jsp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%
    response.setContentType("application/xml");
    %>    
    <ajax-response> 
    <response type="object" id="objectId">
    <returnObject name="<%=request.getParameter("rName")%>-1" age="<%=request.getParameter("rAge")%>" />
    <returnObject name="<%=request.getParameter("rName")%>-2" age="<%=request.getParameter("rAge")%>" />
    <returnObject name="<%=request.getParameter("rName")%>-3" age="<%=request.getParameter("rAge")%>" />
    </response> 
    </ajax-response> 
    

    posted on 2007-03-29 10:09 朱巖 閱讀(400) 評論(0)  編輯  收藏 所屬分類: JavaScript文章

    主站蜘蛛池模板: 99久久精品日本一区二区免费| 亚洲一级特黄大片在线观看| 久久久久久久久亚洲| 国产乱妇高清无乱码免费| 免费一级成人毛片| 杨幂最新免费特级毛片| 亚洲一区二区三区在线播放| eeuss免费影院| 亚洲AV无码久久精品蜜桃| 桃子视频在线观看高清免费视频| 亚洲成av人片天堂网| 最近中文字幕2019高清免费| 亚洲精品亚洲人成在线麻豆| 99热在线精品免费全部my| 亚洲人成色777777精品| 亚洲AV中文无码乱人伦在线视色| 精品国产呦系列在线观看免费| 亚洲第一AV网站| 最近中文字幕大全中文字幕免费| 亚洲人成网站在线观看播放动漫| 欧洲美熟女乱又伦免费视频| 美女被暴羞羞免费视频| 亚洲国产美女精品久久久久∴| 一级毛片**不卡免费播| 亚洲真人无码永久在线观看| 又粗又大又猛又爽免费视频| 3344在线看片免费| 亚洲精品午夜国产va久久| 免费吃奶摸下激烈视频| 日韩成人免费视频| 亚洲人成网亚洲欧洲无码| 久久久精品国产亚洲成人满18免费网站 | 国产又大又粗又硬又长免费 | 国产色爽免费无码视频| 亚洲欧洲国产综合| 免费人妻无码不卡中文字幕18禁| a级毛片在线免费| 亚洲色大成网站WWW国产| 亚洲精品国产精品乱码视色| 曰曰鲁夜夜免费播放视频| 未满十八私人高清免费影院|