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

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

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

    隨筆-55  評論-208  文章-0  trackbacks-0
    今天開始試用ajax最為項目的輔助,本來開始很順利,測試的內容也比較簡單
    先在一個jsp中加入ajax的引擎
    //ajax?引擎
    ????<script language="javascript">
    ????var?http_request?
    =?false;
    ????var?currentPos?
    =?null;
    ????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(
    "POST",?url,?true);
    ????????http_request.setRequestHeader(
    "Content-Type","application/x-www-form-urlencoded");
    ????????????
    ????????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("http_request.status?exception?code:"+http_request.status);
    ????????????}

    ????????}

    ????}
    </script>

    然后在jsp中做個測試的select,和用于顯示ajax的回傳數據的區域
    <table?width="200"?border="0"?cellspacing="0"?cellpadding="0">
    ????
    <tr>
    ????????
    <td?height="20"><select?name="ajaxtest"?size="1"?onchange="showRoles('test1');">
    ????????
    <option?selected="selected"?value="test1"?>test1</option>
    ????????
    <option?value="test2"?>test2</option>
    ????????
    <option?value="test3"?>test3</option>
    ????????
    <option?value="test4"?>test4</option>
    ????????
    </select></td>
    ????
    </tr>
    ????
    <tr?style="display:none">
    ????????
    <td?height="20"?id="test1">&nbsp;</td>
    ????
    </tr>
    ?</table>
    再寫一個js用了作為事件的觸發
    <script?language="javascript">
    ????????
    ????
    //顯示部門下的崗位
    ????function?showRoles(obj)?{
    ????????document.getElementById(obj).parentNode.style.display?
    =?"";
    ????????document.getElementById(obj).innerHTML?
    =?"loading"
    ????????currentPos?
    =?obj;
    ????????
    ????????send_request(
    "http://localhost/oa-web/app/test/sample2_2.jsp?playPos="+obj);
    ????}
    </script>
    ?再另外寫一個資源jsp,用于讀取資源回來

    <%@?page?language="java"?import="java.util.*"?pageEncoding="UTF-8"%>
    <meta?http-equiv="Content-Type"?content="text/html;?charset=UTF-8">
    <%?
    String?playPos?
    =?request.getParameter("playPos");
    if("test1".equals(playPos))?out.print("&nbsp;&nbsp;總經理皮總<br>&nbsp;&nbsp;副總經理老皮");
    else?if("test2".equals(playPos))?out.println("&nbsp;&nbsp;總工程師<br>&nbsp;&nbsp;軟件工程師");
    else?if("test3".equals(playPos))?out.println("&nbsp;&nbsp;總工程師張青與<br>&nbsp;&nbsp;軟件工程師味蕾");
    else?if("test4".equals(playPos))?out.println("&nbsp;&nbsp;總工程師張遲斌<br>&nbsp;&nbsp;軟件工程師章魚");
    %>
    兩個jsp的編碼都是utf-8的,但是在測試時發現回傳回來的responseText都是亂碼
    去google上找,原來http_request?這個對象在request和response都是以gb2312進行的,需要更改編碼
    但是可惡的是javascript沒有提供更改http_request?編碼的方法于是在網上找了一個vbscript的函數
    <SCRIPT?LANGUAGE="vbScript">?
    ?Function?URLEncoding(vstrIn)?
    ?strReturn?
    =?""?
    ?For?i?
    =?1?To?Len(vstrIn)
    ?ThisChr?
    =?Mid(vStrIn,i,1)
    ?If?Abs(Asc(ThisChr))?
    <?&HFF?Then
    ?strReturn?
    =?strReturn?&?ThisChr?
    ?Else?
    ?innerCode?
    =?Asc(ThisChr)
    ?If?innerCode?
    <?0?Then?
    ?innerCode?
    =?innerCode?+?&H10000
    ?End?If?
    ?Hight8?
    =?(innerCode?And?&HFF00)\?&HFF?
    ?Low8?
    =?innerCode?And?&HFF?
    ?strReturn?
    =?strReturn?&?"%"?&?Hex(Hight8)?&?"%"?&?Hex(Low8)
    ?End?If
    ?Next?
    ?URLEncoding?
    =?strReturn
    ?End?Function?
    </SCRIPT>?
    然后對回傳回來的http_request?進行一下編碼更改
    ????//?處理返回信息的函數
    ????function?processRequest()?{
    ????????
    if?(http_request.readyState?==?4)?{?//?判斷對象狀態
    ?????????????
    ????????????
    if?(http_request.status?==?200)?{?//?信息已經成功返回,開始處理信息
    ????????????????
    ????????????????URLEncoding(http_request.responseBody);
    ????????????????
    ????????????????document.getElementById(currentPos).innerHTML?
    =?http_request.responseText;
    ????????????}
    ?else?{?//頁面不正常
    ????????????????alert("http_request.status?exception?code:"+http_request.status);
    ????????????}

    ????????}

    ????}
    最終終于可以正常顯示中文了
    這兩天和編碼的糾纏有一個深刻的體會:做中國人難啊,要是計算機是中國人發明的多好:)
    注:這種方法只在IE上試驗過,別的瀏覽器還沒有試
    posted on 2006-04-13 20:14 rocket 閱讀(1483) 評論(0)  編輯  收藏

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲最大av无码网址| 亚洲第一区精品观看| 久久久久亚洲精品日久生情| 三级网站免费观看| 亚洲av中文无码乱人伦在线r▽| 岛国精品一区免费视频在线观看| 亚洲精品无码专区2| 一区二区三区视频免费观看| 国产日韩成人亚洲丁香婷婷| 中文字幕版免费电影网站| 亚洲国产精品福利片在线观看| 可以免费观看的毛片| 337p欧洲亚洲大胆艺术| 在线免费观看你懂的| 亚洲AV无码专区在线亚| 国产美女精品久久久久久久免费| 美女羞羞免费视频网站| 久久精品国产亚洲Aⅴ香蕉| 国产一级片免费看| 亚洲免费闲人蜜桃| 国产一区二区三区在线免费| 国产VA免费精品高清在线| 亚洲国产精品无码专区| 一色屋成人免费精品网站| 日韩色视频一区二区三区亚洲| 久久激情亚洲精品无码?V| 91精品国产免费入口| 久久亚洲精品无码网站| 亚洲桃色AV无码| 一二三四免费观看在线视频中文版 | h片在线免费观看| 亚洲精华国产精华精华液好用| 亚洲美女高清一区二区三区 | 国产精品内射视频免费| 久久精品国产亚洲AV无码娇色 | 亚洲av成本人无码网站| 亚洲A丁香五香天堂网| 最近2019中文字幕免费大全5| 亚洲精品GV天堂无码男同| 亚洲gv猛男gv无码男同短文| 成年人免费观看视频网站|