<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

    我今天遇到了一個(gè)問(wèn)題,在用post發(fā)送一個(gè)請(qǐng)求到服務(wù)器,然后,返回來(lái)了XML的串?dāng)?shù)據(jù),我想通過(guò)response.responseXML來(lái)取得XML的Document對(duì)象,來(lái)實(shí)現(xiàn)用Javascript對(duì)XML文檔的解析,但是,我就只能用response.responseText取得文本數(shù)據(jù),通過(guò)response.responseXML取得的對(duì)象為null.結(jié)果一直也沒(méi)有搞明白。
    javascript的代碼如下(用的prototype1.6.js):

    function findpoi(){
    ????//alert("find ");??
    ????var pname=$F('pnid');
    ????alert(pname);
    ????
    ????var url="poiSearch.do";
    ????
    ????var opt = {
    ?????method:'post',
    ?????
    ?????//contentType:'application/xml',
    ?????//requestHeaders:'text/xml',
    ?????onComplete:function(transport){
    ??????alert(transport.status);
    ??????document.title="ok";
    ??????if(200==transport.status){
    ???????
    ???????//document.title="ok";
    ???????var cntTxt=transport.responseText;
    ???????alert(cntTxt);
    ???????
    ???????var dobj = transport.responseXML;
    ???????alert("xml is :? "+dobj);
    ??????(此處總是取得的是null對(duì)象)
    ???????
    ???????//var pl = cntTxt.getElementByName("poi");
    ???????//alert(pl);
    ???????
    ???????var ajObj = Ajax.getTransport();
    ???????alert(ajObj);
    ????????
    ????????????
    ??????}
    ?????},
    ?????postBody:"?city=beijing&keyword=kfc"
    ?????
    ????};
    ????
    ????var ajax=new Ajax.Request(url,opt);
    ????
    ???}

    我的struts action的代碼如下:

    public ActionForward execute(ActionMapping mapping, ActionForm form,
    ???HttpServletRequest request, HttpServletResponse response) {
    ??DynaActionForm poiForm = (DynaActionForm) form;

    ??String city = (String) poiForm.get("city");
    ??String keyword = (String) poiForm.get("keyword");


    ??
    ??Search bs = new Search();
    ??bs.baseSearch(city + "/" + keyword);

    ??PoiDAO poidao = new PoiDAO();
    ??int count = 10;
    ??int page = 1;
    ??ArrayList arry = poidao.by_key_search("北京", "長(zhǎng)安商場(chǎng)", count,
    ????page);
    ??System.out.println(arry.size());
    ??
    ??Document doc= DocumentFactory.getInstance().createDocument();
    ??doc.setXMLEncoding("UTF-8");
    ??Element root = doc.addElement("pois");
    ??
    ??root.addElement("poi")
    ??.addAttribute("pid", "1155")
    ??.addAttribute("longitude", "116.5864")
    ??.addAttribute("latitude", "39.8195");??
    ??
    ??
    ??ListIterator iter = arry.listIterator();
    ??while(iter.hasNext()){
    ??
    ???Poi p = (Poi)iter.next();
    ???//float lon = p.getLatitude();
    ???int id=p.getPoi_id();
    ???double lon=p.getLongitude();
    ???double lat = p.getLatitude();
    ???
    ???System.out.println("id is :? "+id);
    ???System.out.println("lon : " + lon);
    ???
    ???Element poi=root.addElement("poi")
    ????.addAttribute("pid", String.valueOf(p.getPoi_id()))
    ????.addAttribute("longitude", String.valueOf(lon))
    ????.addAttribute("latitude", String.valueOf(lat));???
    ??}
    ??
    ??try {
    ???PrintWriter w = response.getWriter();
    ???
    ???XMLWriter writer = new XMLWriter(w);
    ???writer.write(doc);
    ???
    ???writer.close();
    ???w.close();
    ???
    ??} catch (IOException e) {
    ???// TODO Auto-generated catch block
    ???e.printStackTrace();
    ??}
    ??
    ??return null;
    ?}

    下午的時(shí)候,總是在試圖通過(guò)設(shè)置contentType來(lái)實(shí)現(xiàn),結(jié)果是失敗了。回來(lái)的路上,我就一直在想,能取到XML的串,不能取到XML的對(duì)象。那么也就是說(shuō),返回的數(shù)據(jù)是串,也就是文本類(lèi)型。突然,我的腦海里閃現(xiàn)了一個(gè)問(wèn)題,是不是返回的contentType沒(méi)有設(shè)置成xml.
    所以,我就在action里面,添加了
    response.setContentType("text/xml");
    重新測(cè)試,果然成功。
    response.responseXML取到了對(duì)象。

    問(wèn)題就這樣得到了解決。

    問(wèn)題總結(jié):
    如果想要通過(guò)AJAX的response.responseXML取得XML Document對(duì)象,那么就要在服務(wù)器的相應(yīng)的時(shí)候設(shè)置ContextType為text/xml,否則的話,就只能去得到xml的文本串,不能得到DOM對(duì)象。




    |----------------------------------------------------------------------------------------|
                               版權(quán)聲明  版權(quán)所有 @zhyiwww
                引用請(qǐng)注明來(lái)源 http://m.tkk7.com/zhyiwww   
    |----------------------------------------------------------------------------------------|
    posted on 2008-05-21 21:11 zhyiwww 閱讀(2513) 評(píng)論(3)  編輯  收藏 所屬分類(lèi): j2ee

    FeedBack:
    # re: AJAX中返回XML串但是不能返回XML DOM對(duì)象問(wèn)題的解決
    2008-08-04 17:58 | 小陳
    扯淡嘛~~~~~~  回復(fù)  更多評(píng)論
      
    # re: AJAX中返回XML串但是不能返回XML DOM對(duì)象問(wèn)題的解決
    2008-08-21 16:29 | Just
    writer.write(doc);
    write方法中真能用Object做參數(shù)嗎?我用的JDK6,沒(méi)有這個(gè)參數(shù)的方法啊,樓主怎么實(shí)現(xiàn)的?有興趣的話加我QQ5142035聊下  回復(fù)  更多評(píng)論
      
    # re: AJAX中返回XML串但是不能返回XML DOM對(duì)象問(wèn)題的解決
    2008-08-27 22:58 | zhyiwww
    @Just
    我用的是dom4J  回復(fù)  更多評(píng)論
      
    主站蜘蛛池模板: 中国在线观看免费高清完整版| 少妇性饥渴无码A区免费| 亚洲网站在线免费观看| 国产精品亚洲一区二区三区在线| 国产免费一级高清淫曰本片| 国产精品亚洲αv天堂无码| 人人爽人人爽人人片av免费 | 亚洲一本一道一区二区三区| 无码乱肉视频免费大全合集 | 日本中文字幕免费看| 亚洲高清无码专区视频| 亚洲第一视频在线观看免费| 亚洲中文字幕日产乱码高清app| 两个人的视频www免费| 久久亚洲成a人片| 久久久久av无码免费网 | 特级毛片全部免费播放| 国产成人精品日本亚洲专区| 伊人久久大香线蕉免费视频| 亚洲欧洲日产国码久在线观看| 91精品免费在线观看| 亚洲人成网站999久久久综合| www国产亚洲精品久久久日本| a毛片免费播放全部完整| 亚洲成年人电影在线观看| 手机在线毛片免费播放| 免费看一级高潮毛片| 久久精品7亚洲午夜a| 国产日本一线在线观看免费| 国产亚洲Av综合人人澡精品| 亚洲欧洲无码AV电影在线观看| 毛片免费全部播放无码| 国产精品亚洲专区无码牛牛| 亚洲精品少妇30p| 最近2019中文字幕免费看最新 | 亚洲国产亚洲片在线观看播放| 又爽又黄无遮挡高清免费视频| 国产精品免费高清在线观看| 亚洲中文无码永久免| 久久精品亚洲中文字幕无码网站| 扒开双腿猛进入爽爽免费视频|