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

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

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

    zhyiwww
    用平實(shí)的筆,記錄編程路上的點(diǎn)點(diǎn)滴滴………
    posts - 536,comments - 394,trackbacks - 0

    AJAX 中從遠(yuǎn)程 URL 動(dòng)態(tài)取得 xml 的方法

    需求:

    JavaScript中動(dòng)態(tài)的從一個(gè)URL取得xml文件,然后,動(dòng)態(tài)的更新數(shù)據(jù)。

    問題的難點(diǎn):

    Javascript 不能實(shí)現(xiàn)從一個(gè)URL讀取xml數(shù)據(jù)。

    使用動(dòng)態(tài)的參數(shù)的時(shí)候,如后使用GET方法,那么,參數(shù)有可能太長(zhǎng)。

    解決的辦法:

    這個(gè)辦法使用AJAX可以實(shí)現(xiàn)。

    因?yàn)?span lang="EN-US">AJAX可以從URL來動(dòng)態(tài)的讀取xml數(shù)據(jù)。

    同時(shí)也可以很方便的分析和處理XML數(shù)據(jù)。

    問題的關(guān)鍵點(diǎn):

    AJAX 不能從一個(gè)不同Context的服務(wù)器上來讀入XML,所以要想讀取xml數(shù)據(jù)的話,那就一定要在同一個(gè)Context中,如果不在,那么就使用一個(gè)Servlet來實(shí)現(xiàn)從一個(gè)遠(yuǎn)程的URL上讀取數(shù)據(jù),然后可以通過調(diào)用此Servlet來取得遠(yuǎn)程的數(shù)據(jù)。

    我的實(shí)現(xiàn):

    ?

    ? 寫一個(gè)Servlet來實(shí)現(xiàn)從遠(yuǎn)程url上讀取xml數(shù)據(jù),這個(gè)url參數(shù)是用戶根據(jù)自己的需要傳遞的。

    ??? public void doGet(HttpServletRequest request, HttpServletResponse response)

    ??????????? throws ServletException, IOException {

    ??????? System.out.println(" --------------? Get ----------------? ");

    ??????? response.setContentType("text/xml");

    ??????? response.setCharacterEncoding("UTF-8");

    ??????? //????? PrintWriter out = response.getWriter();

    ??????? //doPost(request,response);

    ???????

    ??????? String url = request.getParameter("url");

    ??????? //out.println(url);

    ??????? //String url = "";

    ??????? System.out.println("url is :? " + url);

    ???????

    ??????? //response.setContentType("text/xml");

    ???????

    ??????? PrintWriter out = response.getWriter();

    ???????????

    ??????? BufferedReader reader = new BufferedReader(new InputStreamReader(new URL(url).openStream()));

    ???????

    ??????? StringBuffer xmlData = new StringBuffer();

    ??????? String tmp = "";

    ???????

    ??????? while((tmp = reader.readLine())!=null){

    ??????????? log.info(tmp);

    ??????????? out.print(tmp);

    ??????????? //System.out.println(" tmp :? " + tmp);

    ??????????? xmlData.append(tmp);

    ??????? }

    ???????

    ???????

    ??????? try {

    ??????????? out.println(XMLUtil.format(xmlData.toString()));

    ??????? } catch (DocumentException e) {

    ??????????? // TODO Auto-generated catch block

    ??????????? e.printStackTrace();

    ??????? }

    ??????? reader.close();

    ???????

    ??? }

    ? ?? AJAX來調(diào)用servlet取得此數(shù)據(jù)

    ?????? < script type = "text/javascript" >

    ?

    ?????????? var xmlHttp= new ActiveXObject( "Msxml2.XMLHTTP" );

    ?????????? //alert(xmlHttp);???

    ?????????? 這個(gè) url 是你的 servlet uri, 只能是在同一個(gè) context 內(nèi)的,否則不能調(diào)用。所以,如果需要跨服務(wù)器的話,或者需要跨 context 的話,就需要使用在本 context 上使用一個(gè) servlet 做跳轉(zhuǎn)。

    ?????????? var sevUrl = "../servlet/PullXmlData?url=" ;

    ?????????? ?

    ?????????? 下面的那個(gè) url 參數(shù)其實(shí)是我們的遠(yuǎn)程的 xml 的數(shù)據(jù)的 url, 因?yàn)樵趨?shù)里面有等號(hào),所以在調(diào)用之前就要通過一個(gè)處理和轉(zhuǎn)換,這一步也是必須的。

    ?????????? var url = sevUrl + encodeURIComponent( "http://192.168.1.50:8080/remoteServer /XmlInvoke?aaa=aaa&bbb=bbb " );????

    ???

    ?????????? alert( "url :? " + url);?????

    ???

    ?????????? xmlHttp.open( "post" , url , false );

    ?????????? xmlHttp.onreadystatechange= function () {?????????????

    ????????????? if (xmlHttp.readyState==4) {

    ????????????? ? ? alert(xmlHttp.responseText);

    ????????????? ?? document.write(xmlHttp.responseText);

    ????????????? }

    ?????????? }

    ?????????? xmlHttp.send();????? ??????

    ?????? </ script >

    ??????

    ?????? 我也剛接觸 Ajax, 所以也只能想到這個(gè)解決方案,如果大家有好的解決辦法,還請(qǐng)多多指教。



    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請(qǐng)注明來源 http://www.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2007-05-14 16:28 zhyiwww 閱讀(3240) 評(píng)論(3)  編輯  收藏 所屬分類: javascript

    FeedBack:
    # re: AJAX中從遠(yuǎn)程URL動(dòng)態(tài)取得xml的方法
    2007-05-14 17:36 | ltw
    可以啊 是這么做的  回復(fù)  更多評(píng)論
      
    # re: AJAX中從遠(yuǎn)程URL動(dòng)態(tài)取得xml的方法
    2007-05-14 17:38 | ltw
    不過 為什么返回信息不用responseXML直接好解析呢  回復(fù)  更多評(píng)論
      
    # re: AJAX中從遠(yuǎn)程URL動(dòng)態(tài)取得xml的方法
    2007-05-14 19:05 | TiGERTiAN
    一般就是這樣調(diào)用的,叫做Proxy  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 日日AV拍夜夜添久久免费| 亚洲日本中文字幕区| 中国好声音第二季免费播放| 91嫩草亚洲精品| 亚洲日产无码中文字幕| 免费看的黄色大片| 丁香花免费完整高清观看| 国产免费网站看v片在线| 国产亚洲午夜精品| 久久亚洲精品成人无码| 亚洲欧洲无码一区二区三区| 亚洲国产成人精品无码区在线网站| 亚洲熟女乱综合一区二区| vvvv99日韩精品亚洲| 国产美女a做受大片免费| 毛片免费在线播放| 成人毛片免费观看视频大全| 免费看成人AA片无码视频羞羞网| 日韩免费无码视频一区二区三区| 在线观看免费视频网站色| 一区二区视频免费观看| a毛片全部免费播放| 美女被cao网站免费看在线看| 天黑黑影院在线观看视频高清免费| 一边摸一边桶一边脱免费视频| 人人公开免费超级碰碰碰视频| 尤物视频在线免费观看| 久久免费观看国产精品| 91香蕉成人免费网站| 日本特黄特黄刺激大片免费| 亚洲免费无码在线| 伊人久久综在合线亚洲2019| 国产精品亚洲综合久久| 麻豆安全免费网址入口| 无码少妇精品一区二区免费动态 | 亚洲成人免费在线| 永久免费bbbbbb视频| 狠狠亚洲婷婷综合色香五月排名| 91情国产l精品国产亚洲区| 久久水蜜桃亚洲AV无码精品| 一级人做人爰a全过程免费视频 |