<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學習
    主站蜘蛛池模板: 国产大片91精品免费看3| 亚洲欧洲日韩国产| 亚洲狠狠婷婷综合久久| 无码国产精品久久一区免费| 亚洲五月六月丁香激情| 日韩精品极品视频在线观看免费 | 免费国产成人18在线观看| 亚洲人JIZZ日本人| 永久在线观看免费视频| 亚洲欧洲日韩国产综合在线二区| 免费无码作爱视频| 蜜芽亚洲av无码精品色午夜| 久久久久国色av免费看| 亚洲人成高清在线播放| 国内免费高清在线观看| 免费在线不卡视频| 你懂得的在线观看免费视频| 亚洲国产精品久久久久久| 2021免费日韩视频网| 亚洲成a人无码亚洲成www牛牛 | 在线观看免费播放av片| 亚洲精品乱码久久久久久下载| 性做久久久久久久免费看| 精品一区二区三区免费毛片| 久久99亚洲综合精品首页| 无码av免费一区二区三区| 亚洲综合色婷婷在线观看| 亚洲精品色婷婷在线影院| 午夜网站在线观看免费完整高清观看 | 成人精品一区二区三区不卡免费看| 亚洲一卡2卡三卡4卡有限公司| 99久久免费国产精品特黄| 男女交性无遮挡免费视频| 亚洲人成网7777777国产| 美女视频黄免费亚洲| 人与动性xxxxx免费| 亚洲国产精品综合久久网各| 亚洲av午夜精品一区二区三区| 久久99热精品免费观看动漫| 亚洲成av人片天堂网无码】| 亚洲精品无码久久千人斩|