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

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

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

    javaGrowing

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      92 隨筆 :: 33 文章 :: 49 評論 :: 0 Trackbacks
    在Web客戶端使用xmlhttp對象,可以十分方便的和服務(wù)器交換數(shù)據(jù),我們可以獲取和發(fā)送任何類型的數(shù)據(jù),甚至二進制數(shù)據(jù)到服務(wù)器上。xmlhttp技術(shù)同時也是目前大多數(shù)無刷新頁面使用的和服務(wù)器交換數(shù)據(jù)的方式,這種方式比以往的隱藏iframe的方法要方便和經(jīng)濟的多。

    ??? 同時讓我們高興得是xmlhttp并不是IE特有的東西,雖然目前還不是W3C的標準,不過IE, Netscape/Mozilla, 和Safari都支持。在IE中我們使用new ActiveXObject('MSXML2.XMLHTTP')或者new ActiveXObject("Microsoft.XMLHTTP")來獲得的xmlhttp對象實例,使用前者還是后者和客戶端機器安裝的MSXML版本有關(guān)。在Netscape/Mozilla和Safari中,使用new XMLHttpRequest()來獲得xmlhttp對象實例。比如在IE中,我們通常這樣使用:
    var?xmlhttp?=?null;?
    try?
    {?
    ????xmlhttp?
    =?new?ActiveXObject("MSXML2.XMLHTTP");?
    }?
    catch(e)?
    {?
    ????
    try?
    ????{?
    ????????xmlhttp?
    =?new?ActiveXObject("Microsoft.XMLHTTP");?
    ????}?
    ????
    catch(e2){}?
    }?


    ??? 使用xmlhttp對象其實是并不是什么困難的事,它一共就6個方法8個屬性。不過它最主要的是提供了兩種執(zhí)行模式:同步模式和異步模式。同步模式可以比較精確的控制程序流程,可是如果服務(wù)器的Response太慢,browser會有死掉失去相應(yīng)的問題;而使用異步模式由于是事件觸發(fā)方式控制流程,會給程序運行帶來一些不可與預(yù)計的問題,因為你不知道客戶端等待服務(wù)器Response的過程中,用戶會在browser里做什么操作。?

    ??? 下面是一個同步方式獲取服務(wù)器數(shù)據(jù)的簡單示例:

    function?GetRemoteData(url)
    {
    ????
    var?xmlhttp?=?new?ActiveXObject("Microsoft.XMLHTTP");
    ????
    try
    ????{??
    ?????????xmlhttp.open('GET',?url,?
    false);
    ?????????
    if?(?xmlhttp.status?==?200?)
    ?????????{
    ?????????????
    return?xmlhttp.responseText;
    ?????????}
    ?????????
    throw?'';?
    ????}
    ????
    catch(e)
    ????{
    ?????????
    return?'';
    ????}
    }


    ??? XMLHTTP對象的屬性和方法列表(來自IXMLHTTPRequest接口):

    ???
    NameTypeDescription
    onreadystatechange N/A指定當就緒狀態(tài)發(fā)生改變時調(diào)用的事件處理函數(shù),僅用于異步操作?
    readyState Long異步操作的狀態(tài):未初始化(0),正在加載(1),已加載(2),交互(3),已完成(4)
    responseBody Variant將響應(yīng)信息正文作為unsigned byte數(shù)組返回
    responseStream Variant將響應(yīng)信息正文作為一個ADO Stream對象返回
    responseText String將響應(yīng)信息正文作為一個文本字符串返回
    responseXML Object通過XMLDom將響應(yīng)信息正文解析為XMLDocument對象
    status Long服務(wù)器返回的HTTP狀態(tài)碼
    statusText String服務(wù)器HTTP響應(yīng)行狀態(tài)
    ???
    NameDesciption
    abort取消當前 HTTP 請求
    getAllResponseHeaders從響應(yīng)信息中檢索所有的標頭字段
    getResponseHeader從響應(yīng)信息正文中獲得一個 HTTP 標頭值
    open(method, url, boolAsync, bstrUser, bstrPassword)打開一個與 HTTP 服務(wù)器的連接
    send(varBody)設(shè)定一個請求的標頭字段
    setRequestHeader(bstrHeader, bstrValue)向 HTTP 服務(wù)器發(fā)送請求。可包含正文。

    ??? 這里面顯然就open方法比較麻煩,帶了一大堆參數(shù),它們的含義分別是:
    ???
    ParameterDescription
    methodHTTP的通信方式,比如GET, HEAD, POST, PUT, DELETE, CONNECT等
    url接收數(shù)據(jù)的服務(wù)器的URL地址,URL可帶QueryString
    boolAsync一個布爾標識,說明請求是否為異步的。如果是異步通信方式,客戶端就不等待服務(wù)器的響應(yīng);如果是同步方式,客戶機會等到服務(wù)器返回消息后才去執(zhí)行其它操作
    bstrUser用戶ID,用于服務(wù)器身份驗證
    bstrPassword用戶密碼,用于服務(wù)器身份驗證

    ??? 異步通訊的示例:
    xmlhttp.open("GET",?"default.aspx",?true);
    xmlhttp.onreadystatechange?
    =?function()
    {
    ????
    if?(?xmlhttp.readyState==4?)
    ????{
    ????????alert(xmlhttp.responseText);
    ????}
    }
    xmlhttp.send(
    null);


    ??? 其實使用xmlhttp就這么簡單,復雜的是服務(wù)器端數(shù)據(jù)的組織方式,而且需要開發(fā)人員同時熟悉Client和Server端的開發(fā),才能事半功倍。可是好像說了半天這個玩意兒和xml沒有什么關(guān)系啊,怎么叫xmlhttp呢?我們注意到response的數(shù)據(jù)類型中有一個responseXML,不過它解析返回的XMLDocument屬于XMLDOM的內(nèi)容了,和使用xmlhttp來和服務(wù)器通訊的關(guān)系并不大,以后再來細說。

    posted on 2006-07-29 11:46 javaGrowing 閱讀(328) 評論(0)  編輯  收藏 所屬分類: jsp學習
    主站蜘蛛池模板: 亚洲欧洲国产经精品香蕉网| 无码乱肉视频免费大全合集| 国产v亚洲v天堂a无| 亚洲人成亚洲人成在线观看 | 色屁屁www影院免费观看视频| 国产香蕉九九久久精品免费| 免费一区二区三区| 一区二区视频免费观看| 亚洲成av人片天堂网无码】| 亚洲综合成人网在线观看| 国产亚洲一区二区三区在线不卡| 亚洲成在人天堂在线| 亚洲精品视频久久久| 日韩免费一区二区三区| 免费看韩国黄a片在线观看| 最近中文字幕完整版免费高清| 亚洲免费综合色在线视频| 亚洲国产成AV人天堂无码| 亚洲综合精品香蕉久久网97| 国产亚洲精久久久久久无码| 亚洲精品无码久久久| 国产一区二区三区在线观看免费| 国产日韩一区二区三免费高清| 亚洲国产精品成人精品软件| 亚洲AV无码一区二区二三区软件| 91在线视频免费播放| 日本免费一区二区在线观看| 四虎影视成人永久免费观看视频| 亚洲一区二区三区高清不卡| 亚洲最大中文字幕| 亚洲综合激情九月婷婷 | 国产精品亚洲一区二区无码 | h视频免费高清在线观看| 免费国产va视频永久在线观看| 亚洲日韩图片专区第1页| 亚洲第一精品在线视频| 久久精品国产精品亚洲艾| 亚洲电影一区二区| 亚洲福利视频网站| 国产精品亚洲四区在线观看| 亚洲乱人伦中文字幕无码|