剛接觸ajax不久,想通過ajax實現從服務器上動態取得xml數據,然后,在客戶端動態更新并顯示。
但是,再firefox中,在取得xmlDom后,用在IE下面解析的辦法(網上有很多的資料,也可以我的總結),怎么也不能取得標簽文本的值。
經過多次實踐,才發現了下面的方法是可以實現的。原來很簡單(見笑了…………)
服務器返回XML結果如下:
? <?xml version="1.0" encoding="UTF-8" ?>
- <citys>
?<city>shanghai</city>
?<city>tianjin</city>
?<city>chengdu</city>
?<city>chongqing</city>
?<city>hainan</city>
? </citys>
==========================================================================
解析如下:
// 取得的是xmlDom對象
var doc = response.responseXML;
???????? // 根據標簽來取得List對象
??????? var cs = doc.getElementsByTagName("city");?????
??????? alert(cs.length);
???????
??????? for(var i=0;i<cs.length;i++){
????????? var a = cs[i];
????????? //alert(a);
????????? //alert(a.nodeName);
????????? //alert(a.nodeValue);
????????? var b = a.childNodes;
??? ?? ?? (我的疑問:為什么需要取得b,cs[i]不就是一個city的對象了,為什么還需要取得數組,然后再取其元素,疑惑中)
????????? //alert(b);
????????? var c=b[0];
????????? alert(c.nodeValue);
??????? }
cs取得的結果應該是:
?<city>shanghai</city>
?<city>tianjin</city>
?<city>chengdu</city>
?<city>chongqing</city>
?<city>hainan</city>
city Element對象的一個集合。
所以,對于a來說,那么就應該是
?<city>shanghai</city>
每一個city Element元素的對象了,但是,錯了。此處得到的是一個
Element標簽元素的一個數組。
也就是說用childNodes方法取得的對象永遠是數組對象。那么,你想遍歷其中元素的話,就需要用c對象來取。
本例子源代碼下載
|----------------------------------------------------------------------------------------|
版權聲明 版權所有 @zhyiwww
引用請注明來源 http://www.aygfsteel.com/zhyiwww
|----------------------------------------------------------------------------------------|