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

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

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

    javaGrowing

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

    ??? 同時讓我們高興得是xmlhttp并不是IE特有的東西,雖然目前還不是W3C的標準,不過IE, Netscape/Mozilla, 和Safari都支持。在IE中我們使用new ActiveXObject('MSXML2.XMLHTTP')或者new ActiveXObject("Microsoft.XMLHTTP")來獲得的xmlhttp對象實例,使用前者還是后者和客戶端機器安裝的MSXML版本有關。在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個屬性。不過它最主要的是提供了兩種執行模式:同步模式和異步模式。同步模式可以比較精確的控制程序流程,可是如果服務器的Response太慢,browser會有死掉失去相應的問題;而使用異步模式由于是事件觸發方式控制流程,會給程序運行帶來一些不可與預計的問題,因為你不知道客戶端等待服務器Response的過程中,用戶會在browser里做什么操作。?

    ??? 下面是一個同步方式獲取服務器數據的簡單示例:

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

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

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


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

    posted on 2006-07-29 11:46 javaGrowing 閱讀(329) 評論(0)  編輯  收藏 所屬分類: jsp學習
    主站蜘蛛池模板: 男女作爱免费网站| 亚洲hairy多毛pics大全| 黄色网页在线免费观看| 亚洲欧洲校园自拍都市| 88xx成人永久免费观看| 中文字幕亚洲精品资源网| 99re在线这里只有精品免费| 久久亚洲精品成人av无码网站| 国产精品免费观看调教网| 久久亚洲精品成人777大小说| 免费91麻豆精品国产自产在线观看 | 国产偷国产偷亚洲高清在线| 国产小视频免费观看| 美女被免费视频网站a| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久章草在线精品视频免费观看| 亚洲AV永久无码精品一百度影院| 男人的好看免费观看在线视频| 中文字幕无码亚洲欧洲日韩| 精品国产一区二区三区免费看| 黄色毛片免费在线观看| 亚洲中文字幕在线第六区| 亚洲精品免费视频| 亚洲乱码一二三四区国产| 思思99re66在线精品免费观看| 另类图片亚洲校园小说区| 国产AⅤ无码专区亚洲AV| 久久免费美女视频| 亚洲国产精品成人综合色在线婷婷| 欧美在线看片A免费观看| 美女羞羞视频免费网站| 不卡精品国产_亚洲人成在线| 免费毛片在线看不用播放器| 亚洲最新黄色网址| 国产免费变态视频网址网站| 四虎国产精品免费永久在线| 亚洲国产精品日韩在线| 亚洲五月午夜免费在线视频| 亚洲一区在线免费观看| 色偷偷亚洲男人天堂| 久久精品亚洲综合一品|