Получение одного узла XML с помощью JavaScript - PullRequest
2 голосов
/ 12 мая 2011

Это должно быть действительно просто, но по какой-то причине я не могу заставить его работать;Итак, у меня есть 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-игре.Я знаю, что, должно быть, я упускаю что-то действительно очевидное, но я просто не вижу этого, любая помощь будет принята с благодарностью.

Спасибо.

1 Ответ

3 голосов
/ 12 мая 2011

Возможно, вы захотите проверить состояние запроса перед обработкой 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;            
      }
}
...