2011-05-12 71 views
2

這應該很簡單,但由於某種原因,我似乎無法使其工作; 所以我有一個XML文件,如下所示:使用javascript獲取單個XML節點

<board> 
    <version>1</version> 
<r> 
    <c> 
     <tile>g</tile> 
    </c> 

    <c> 
     <tile>B</tile> 
    </c> 
</r> 

<r> 
    <c> 
     <tile>C</tile> 
    </c> 

    <c> 
     <tile>D</tile> 
    </c> 
</r> 
</board> 

而且一些JavaScript這樣的:

function get_cversion(){ 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", "board.XML", false); 
    xmlhttp.send(); 
    xmlDoc = xmlhttp.responseXML; 
    var mytext = 0 


    var x=xmlDoc.getElementsByTagName("version"); 
    mytext = (x[0].childNodes[0].nodeValue); 
    mytext += ""; 
    document.frmOne.input1.value = ""+mytext; 
} 

和去年,我在頁面這樣的形式:

<FORM NAME = frmOne> 

    1val: <INPUT TYPE = Text NAME = input1 SIZE = 4 value =""> 
    <p> 
    <Input Type = Button NAME = b1 VALUE = "Save val" onClick = update_XX()> 
    <p> 
    <Input Type = Button NAME = b2 VALUE = "WOOOOO" onClick = get_cversion()> 
</FORM> 

我在這個完整的XML遊戲中,它仍然是一個真正的新手。我知道我必須錯過一些非常明顯的東西,但我不能看到它,任何幫助將不勝感激。

謝謝。

+0

它是一個糊錯誤或者是你真的錯過''一個 – mplungjan 2011-05-12 15:12:30

+0

粘貼操作錯誤.. *固定* – tomatosource 2011-05-12 15:16:34

+0

這是不夠的 - 假設真的是你的代碼:'文件.frmOne.input1.value =(x [0] .childNodes [0] .nodeValue);' – mplungjan 2011-05-12 17:21:48

回答

3

您可能希望在處理XML之前檢查請求的狀態。你的代碼應該是這個樣子,

function get_cversion(){ 
    if (window.XMLHttpRequest) { 
     xmlhttp = new XMLHttpRequest(); 
    } 
    else { 
     xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); 
    } 
    xmlhttp.open("GET", "board.XML", false); 
    xmlhttp.send();     
     if(xmlhttp.status == 200) { 
      var xmlDoc = xmlhttp.responseXML; 
      var mytext = 0  
      var x=xmlDoc.getElementsByTagName("version"); 
      mytext = (x[0].childNodes[0].nodeValue); 
      mytext += ""; 
      document.frmOne.input1.value = ""+mytext;    
     } 
} 
+0

對,所以我添加了if和then else document.frmOne.input1.value =「whoops」; 它是要哎呀...任何想法爲什麼? – tomatosource 2011-05-12 15:38:08

+0

因爲即時消息IDIOT:board.xml!= board.XML。排序。謝謝您的幫助。 – tomatosource 2011-05-13 02:15:26